UBJSON - UBJSON

UBJSON
Orijinal yazar (lar)Riyad Kalla
Kararlı sürüm
Taslak 12
YazılmışÇeşitli diller
İşletim sistemiHiç
PlatformÇapraz platform
TürVeri değişimi
LisansApache 2.0
İnternet sitesiUbjson.org

Evrensel İkili JSON (UBJSON) bir bilgisayar veri değişim biçimi. Doğrudan taklit eden ikili bir biçimdir JSON, ancak daha az bayt veri gerektirir. JSON'un genelliğini, JSON'dan çok daha kolay işlenmesiyle birleştirmeyi amaçlamaktadır.

Gerekçe ve Hedefler

UBJSON, BSON, BJSON ve diğerleri. UBJSON aşağıdaki hedeflere sahiptir:

  • JSON spesifikasyonuyla tam uyumluluk - standart JSON ve UBJSON arasında 1: 1 eşleştirme vardır.
  • Uygulama kolaylığı - yalnızca popüler programlama dillerinde yaygın olarak desteklenen veri türlerini içerir, böylece belirli dillerin iyi desteklenmemesiyle ilgili herhangi bir sorun olmaz.
  • Kullanım kolaylığı - hızlı bir şekilde anlaşılabilir ve benimsenebilir.
  • Hız ve verimlilik - UBJSON, sıkıştırılmış JSON muadillerinden (kabaca)% 30 daha küçük olan ve hızlı ayrıştırma için optimize edilmiş veri temsillerini kullanır. Akışlı serileştirme desteklenir, yani UBJSON'un bir ağ bağlantısı üzerinden aktarımı, verilerin son boyutu bilinmeden önce veri göndermeye başlayabilir.

Veri türleri ve sözdizimi

UBJSON verileri bir değer veya a konteyner.

Değer türleri

UBJSON, tüm JSON değer türlerini temsil etmek için tek bir ikili tuple kullanır:[1]

   [uzunluk] [veri] yazın

Demetteki her öğe şu şekilde tanımlanır:

tip

Tür 1 bayttır ASCII onu izleyen verilerin türünü belirtmek için kullanılan karakter. ASCII karakterleri, UBJSON formatında depolanan verileri manuel olarak yürütmeyi ve hata ayıklamayı mümkün olduğunca kolaylaştırmak için seçildi (örneğin, verileri bir onaltılık düzenleyicide nispeten okunabilir hale getirmek). Türler, beş JSON değer türü için mevcuttur. Ayrıca bir işlemsiz canlı tutma için kullanılan tür.

Yüksek hassasiyetli sayılar, keyfi olarak uzun, UTF-8 dize kodlu sayısal bir değer olarak temsil edilir.

uzunluk (isteğe bağlı)

Uzunluk, veri yükünün bayt cinsinden boyutunu kodlayan bir tam sayıdır (ör. Uint8 veya int64). Dizeler, yüksek hassasiyetli sayılar ve isteğe bağlı olarak kaplar için kullanılır. Diğer türler için ihmal edilirler.

Uzunluk, tamsayılarla aynı kural izlenerek kodlanır, dolayısıyla kendi türü de dahil edilir. Örneğin, dize Merhaba olarak kodlanmıştır S,U, 0x05,h,e,l,l,Ö.

veri (isteğe bağlı)

Bu değer türü için gerçek ikili verileri temsil eden bir bayt dizisi. Tüm numaralar büyük adam sipariş.

Konteyner türleri

JSON'a benzer şekilde, UBJSON iki kapsayıcı türü tanımlar: dizi ve nesne.[2]

Diziler, sıralı öğe dizileridir ve bir [ ardından sıfır veya daha fazla değer ve kapsayıcı türü öğesi ve sonda ].

Nesneler, bir { ardından sıfır veya daha fazla anahtar / değer çifti ve sonda }. Her anahtar, S karakter çıkarılır ve her "değer", değerin veya kap türünün herhangi bir öğesi olabilir.

Alternatif olarak, diziler ve nesneler içerdikleri öğe sayısını şu şekilde gösterebilir: # ve ardından ilk elemanından önce bir tamsayı, bu durumda sondaki ] veya } atlanmıştır. Ek olarak, tüm elemanlar aynı türe sahipse, türler çıkarılabilir ve tek bir $ ardından tür gelir; bu durumda öğe sayısı hemen ardından gelmelidir. Örneğin, ["a", "b", "c"] dizisi şu şekilde temsil edilebilir: [,$,C,#,U, 0x03,a,b,c.

Ikili veri

Açık bir ikili tür olmamakla birlikte, ikili veriler bir şiddetle yazılmış uint8 değerleri dizisi. Bu, JSON'un ikili veriler için doğrudan desteği olmasa da JSON ile uyumluluğu korurken ikili verimlilik sağlar.[3][4]

Temsil

MIME türü Bir dosya sisteminde depolandığında '.ubj' dosya uzantısı gibi 'application / ubjson' önerilir.[4]

Yazılım desteği

Ayrıca bakınız

Referanslar

  1. ^ "Değer Türleri | Evrensel İkili JSON Belirtimi". Alındı 20 Temmuz 2019.
  2. ^ "Kapsayıcı Türleri | Evrensel İkili JSON Belirtimi". Alındı 20 Temmuz 2019.
  3. ^ "Binary Data | Universal Binary JSON Specification". Alındı 20 Temmuz 2019.
  4. ^ a b c "UBJSON (.ubj) —Wolfram Dil Belgeleri". Alındı 20 Temmuz 2019.
  5. ^ "UBJSON Depolama Formatı". Alındı 20 Temmuz 2019.

Dış bağlantılar