UBJSON

UBJSON
Oryginalni autorzy Rijad Kalla
Wersja stabilna
Projekt 12
Napisane w Różne języki
System operacyjny Każdy
Platforma Międzyplatformowe
Typ Wymiana danych
Licencja Apache 2.0
Strona internetowa ubjson.org _

Universal Binary JSON ( UBJSON ) to format wymiany danych komputerowych . Jest to postać binarna bezpośrednio imitująca JSON , ale wymagająca mniejszej liczby bajtów danych. Ma na celu osiągnięcie ogólności JSON w połączeniu z dużo łatwiejszym przetwarzaniem niż JSON.

Uzasadnienie i cele

UBJSON jest proponowanym następcą BSON , BJSON i innych. UBJSON ma następujące cele:

  • Pełna kompatybilność ze specyfikacją JSON – istnieje odwzorowanie 1:1 pomiędzy standardowym JSON a UBJSON.
  • Łatwość implementacji – obejmuje tylko typy danych, które są szeroko obsługiwane w popularnych językach programowania, dzięki czemu nie ma problemów z niewłaściwą obsługą niektórych języków.
  • Łatwość użycia – można to szybko zrozumieć i zaadaptować.
  • Szybkość i wydajność – UBJSON wykorzystuje reprezentacje danych, które są (około) 30% mniejsze niż ich skompaktowane odpowiedniki JSON i są zoptymalizowane pod kątem szybkiego analizowania. Obsługiwana jest serializacja strumieniowa, co oznacza, że ​​przesyłanie UBJSON przez połączenie sieciowe może rozpocząć wysyłanie danych, zanim znany będzie ostateczny rozmiar danych.

Typy danych i składnia

Dane UBJSON mogą być wartościami lub kontenerami .

Typy wartości

UBJSON używa pojedynczej krotki binarnej do reprezentowania wszystkich typów wartości JSON:

typ [długość] [dane]

Każdy element w krotce jest zdefiniowany jako:

typ

Typ to 1-bajtowy znak ASCII używany do wskazania typu następujących po nim danych. Znaki ASCII zostały wybrane tak, aby ręczne przeglądanie i debugowanie danych przechowywanych w formacie UBJSON było jak najłatwiejsze (np. aby dane były względnie czytelne w edytorze szesnastkowym). Typy są dostępne dla pięciu typów wartości JSON. Istnieje również no-op używany do utrzymywania transmisji strumieniowej.

Liczby o wysokiej precyzji są reprezentowane jako dowolnie długie wartości liczbowe zakodowane w UTF-8.

długość (opcjonalnie)

Długość jest liczbą całkowitą (np. uint8 lub int64) kodującą rozmiar ładunku danych w bajtach. Jest używany do ciągów znaków, liczb o wysokiej precyzji i opcjonalnie kontenerów. Są one pomijane w przypadku innych typów.

Długość jest kodowana zgodnie z tą samą konwencją, co liczby całkowite, włączając w to własny typ. Na przykład ciąg hello jest zakodowany jako S , U , 0x05, h , e , l , l , o .

dane (opcjonalnie)

Sekwencja bajtów reprezentujących rzeczywiste dane binarne dla tego typu wartości. Wszystkie liczby są w big-endian .

Rodzaje kontenerów

Podobnie jak JSON, UBJSON definiuje dwa typy kontenerów: array i object .

Tablice to uporządkowane sekwencje elementów reprezentowane jako [ po którym następuje zero lub więcej elementów wartości i typu kontenera oraz końcowy ] .

Obiekty są etykietami zestawów elementów, reprezentowanymi jako { , po którym następuje zero lub więcej par klucz-wartość i końcowy } . Każdy klucz jest ciągiem znaków z pominiętym znakiem S , a każda „wartość” może być dowolnym elementem wartości lub typu kontenera.

Alternatywnie tablice i obiekty mogą wskazywać liczbę elementów, które zawierają, jako # , po którym następuje liczba całkowita przed pierwszym elementem, w którym to przypadku końcowe ] lub } są pomijane. Dodatkowo, jeśli wszystkie elementy mają ten sam typ, typy można pominąć i zastąpić pojedynczym $ , po którym następuje typ, w którym to przypadku liczba elementów musi nastąpić natychmiast. Na przykład tablica ["a","b","c"] może być reprezentowana jako [ , $ , C , # , U ,0x03, a , b , c .

Dane binarne

Chociaż nie ma jawnego typu binarnego, dane binarne są przechowywane w silnie typowanej tablicy wartości uint8. Zapewnia to wydajność binarną przy zachowaniu zgodności z JSON, mimo że JSON nie ma bezpośredniego wsparcia dla danych binarnych.

Reprezentacja

typ MIME „application/ubjson”, podobnie jak rozszerzenie pliku „.ubj”, gdy plik jest przechowywany w systemie plików.

Wsparcie oprogramowania

  • Baza danych Teradata
  • Wolfram Language wprowadził obsługę UBJSON w 2017 roku wraz z wersją 11.1 języka.

Zobacz też

Linki zewnętrzne