SORU
18 EYLÜL 2009, Cuma


JSON Dize ikili Veri. Bir şey Base64 daha iyi

JSON format doğal olarak ikili veri desteklemiyor. İkili veri bir dize öğesi (çift tırnak ters kaçar kullanarak sıfır veya daha fazla Unicode karakter yani) JSON içine yerleştirilebilir, böylece kaçmış olmalı.

İkili veri kaçmak için açık bir yöntem Base64 kullanmaktır. Ancak, Base64 yüksek işlem masrafı var. Ayrıca 33% civarında artış veri boyutu neden olan 4 karakter 3 byte genişler.

Bunun için bir kullanım örneği v0.CDMI cloud storage API specification 8 taslak. DİNLENME-Java eklentisi kullanarak bir JSON ile veri nesneleri, örneğin oluşturun

PUT /MyContainer/BinaryObject HTTP/1.1
Host: cloud.example.com
Accept: application/vnd.org.snia.cdmi.dataobject json
Content-Type: application/vnd.org.snia.cdmi.dataobject json
X-CDMI-Specification-Version: 1.0
{
    "mimetype" : "application/octet-stream”,
    "metadata" : [ ],
    "value" :   "TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbmx5IGJ5IGhpcyByZWFzb24sIGJ1dCBieSB0aGlz
    IHNpbmd1bGFyIHBhc3Npb24gZnJvbSBvdGhlciBhbmltYWxzLCB3aGljaCBpcyBhIGx1c3Qgb2Yg
    dGhlIG1pbmQsIHRoYXQgYnkgYSBwZXJzZXZlcmFuY2Ugb2YgZGVsaWdodCBpbiB0aGUgY29udGlu
    dWVkIGFuZCBpbmRlZmF0aWdhYmxlIGdlbmVyYXRpb24gb2Yga25vd2xlZGdlLCBleGNlZWRzIHRo
    ZSBzaG9ydCB2ZWhlbWVuY2Ugb2YgYW55IGNhcm5hbCBwbGVhc3VyZS4=",
}

JSON dizeleri içine ikili veri kodlamak için daha iyi yollar ve standart yöntem vardır?

CEVAP
18 EYLÜL 2009, Cuma


Bir JSON spec göre byte eğer JSON UTF-8 olarak iletirse () olarak temsil edilebilir 94 Unicode karakterleri vardır. Bunu unutmayın, uzay-bilge yapabileceğin en iyi beş karakter olarak dört bayt temsil eden base85 olduğunu düşünüyorum. Ancak, bu base64, daha pahalı hesaplamak için %7'nin üzerinde bir gelişmedir ve uygulamaları muhtemelen değil, bu yüzden bir kazan base64 için daha az yaygındır.

Olabilir de sadece göster her girdi bayt karşılık gelen karakter U 0000-00FF U, en az kodlama gerekli ile JSON standart geçmek bu karakterler; burada avantaj olduğunu gerekli kod çözme nil ötesinde yerleşik işlevleri, ama uzay verimliliği kötü bir 105% genişleme (eğer tüm giriş bayt eşit olasılıkla) vs. 25% base85 veya 3 base64.

Son kararı: ortak, kolay, değil, kötü, base64 kazanır, benim görüşüme göre, gerekçesiyleyeterliyedek garanti.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Garrett Müller

    Garrett Mül

    26 HAZİRAN 2009
  • Nickcidious

    Nickcidious

    6 HAZİRAN 2011
  • Snazzy Labs

    Snazzy Labs

    9 Aralık 2008