UBJSON - UBJSON
![]() | Bu makale için ek alıntılara ihtiyaç var doğrulama.Ekim 2019) (Bu şablon mesajını nasıl ve ne zaman kaldıracağınızı öğrenin) ( |
Orijinal yazar (lar) | Riyad Kalla |
---|---|
Kararlı sürüm | Taslak 12 |
Yazılmış | Çeşitli diller |
İşletim sistemi | Hiç |
Platform | Çapraz platform |
Tür | Veri değişimi |
Lisans | Apache 2.0 |
İnternet sitesi | Ubjson |
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.
- Boş:
Z
- İşlem yok:
N
- işlem yok, alıcı taraf tarafından göz ardı edilecek - Boole türleri: doğru (
T
) ve yanlış (F
) - Sayısal türler: int8 (
ben
), uint8 (U
), int16 (ben
), int32 (l
), int64 (L
), float32 (d
), float64 (D
), ve yüksek hassasiyet (H
) - ASCII karakter:
C
- UTF-8 string:
S
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
- Teradata Veri tabanı[5]
- Wolfram Dili 2017'de dilin 11.1 sürümüyle UBJSON için destek sunuldu.[4]
Ayrıca bakınız
Referanslar
- ^ "Değer Türleri | Evrensel İkili JSON Belirtimi". Alındı 20 Temmuz 2019.
- ^ "Kapsayıcı Türleri | Evrensel İkili JSON Belirtimi". Alındı 20 Temmuz 2019.
- ^ "Binary Data | Universal Binary JSON Specification". Alındı 20 Temmuz 2019.
- ^ a b c "UBJSON (.ubj) —Wolfram Dil Belgeleri". Alındı 20 Temmuz 2019.
- ^ "UBJSON Depolama Formatı". Alındı 20 Temmuz 2019.