PHP <->

2 Cevap php

PHP ve JavaScript arasındaki çok veri geçirerek. Ben php JSON ve json_encode kullanıyorum, ama burada sorun ben dizeleri olarak saklanan sayı çok geçirerek olduğunu - 1.2345 gibi sayılar, örneğin.

Numaraları (yüzen, tamsayılar) gibi doğrudan veri aktarmak için bir yolu var mı ve sonra geri ASCII dönüştürmek ve gerek?

Teşekkürler,

2 Cevap

No HTTP byte protokol (*) olduğu; Bu bayt içine paketlenmiş zorundadır iner şey. İsterseniz kesinlikle değerleri daha kompakt bir paketlenmiş ikili gösterimini kullanabilirsiniz, ama çok daha fazla kodlamak için PHP için iş ve çözmek için JS olacak.

Her neyse, küçük sayılar ortak dava için, metin gösterimleri çok verimli olma eğilimindedir. Sizin örnek 1.2345 aslında bir çift duyarlıklı kayan nokta (8 bayt) 'den bir dize (6 byte) olarak küçüktür.

JSON dize olmayan türleri HTTP bağlantısı üzerinden transfer edilmesine izin için hassas bir icat edildi. Eğer almak için gidiyoruz o kadar sorunsuz bulunuyor. PHP float ve JavaScript Number arasında bir tefrika-> dize> ayrıştırma adım olduğunu bakımı için herhangi bir iyi bir neden var mı?

JS hiçbir bayt veri türü vardır beri (* iso-8859-1 bunu saf bayt sanki o iş yapabilir için JSON yanıt charset ayarlayarak., Bir karakter protokol olarak JavaScript maruz kalan, ancak varsayılan {[ (1)]} genellikle daha uygundur.)

Eğer JSON kullanmak istemiyordu, diğer kodlama seçenekleri vardır. Bir HTTP isteği döndürülen veriler octect akışı (- sanki, gibi basit sayaç örnekleri sunucu UTF-8 kodlu belge veya ikili dosyaları için hiçbir yolu olmaz değil 7-bitlik ASCII temiz akışı) olduğunu.

Bazı ikili serileştirme / veri protokolleri ASN.1 vardır Thrift, Google Protokol Tamponlar, Avro, ya da, tabii, bazı özel biçim. Avantajı JSON "birleşik Okunabilir basitlik" dir.

Ama sonunda - JSON JSON.

Belki birisi çıkar: JavaScript Protocol Buffer Implementation