UBJSON

UBJSON
UBJSON
원본 작성자리야드 칼라
안정적 해제
드래프트 12
기록 위치다양한 언어
운영 체제아무거나
플랫폼크로스 플랫폼
유형데이터 교환
면허증아파치 2.0
웹사이트ubjson.org

유니버설 바이너리 JSON(Universal Binary JSON)은 컴퓨터 데이터 교환 형식이다.JSON을 직접 모방한 바이너리 형태지만, 더 적은 바이트의 데이터를 필요로 한다.JSON보다 처리가 훨씬 쉬운 것과 결합하여 JSON의 일반성을 달성하는 것을 목표로 한다.

근거와 목표

UBJSON은 BSON, BJSON 등의 후계자로 제안되고 있다.UBJSON은 다음과 같은 목표를 가지고 있다.

  • JSON 사양과의 완벽한 호환성 – 표준 JSON과 UBJSON 사이에 1:1 매핑이 있다.
  • 구현 용이성 – 특정 언어가 잘 지원되지 않는 문제가 없도록 인기 프로그래밍 언어로 광범위하게 지원되는 데이터 유형만 포함.
  • 사용 편의성 – 빠르게 이해하고 채택할 수 있다.
  • 속도와 효율성 – UBJSON은 압축된 JSON보다 30% 더 작고 빠른 파싱에 최적화된 데이터 표현을 사용한다.스트리밍된 직렬화가 지원되며, 이는 네트워크 연결을 통한 UBJSON 전송이 데이터의 최종 크기가 알려지기 전에 데이터 전송을 시작할 수 있다는 것을 의미한다.

데이터 유형 및 구문

UBJSON 데이터는 값 또는 컨테이너일 수 있다.

값 유형

UBJSON은 단일 이진 튜플을 사용하여 모든 JSON 값 유형을 나타냄:[1]

[길이] [데이터]를 입력하십시오.

튜플의 각 요소는 다음과 같이 정의된다.

타자를 치다

타입은 그것을 따르는 데이터의 타입을 나타내는 데 사용되는 1바이트 ASCII 문자다.ASCII 문자는 UBJSON 형식으로 저장된 데이터를 가능한 한 쉽게 수동으로 걷고 디버깅하기 위해 선택되었다(예: 16진수 편집기에서 데이터를 비교적 쉽게 읽을 수 있게 함).5가지 JSON 값 유형에 대해 유형을 사용할 수 있다.또한 스트림 keep-alive에 사용되는 no-op 타입도 있다.

고정밀 번호는 임의로 긴 UTF-8 문자열 인코딩 숫자 값으로 표현된다.

길이(선택사항)

길이는 데이터 페이로드 크기를 바이트 단위로 인코딩하는 정수(예: uint8 또는 int64)이다.문자열, 고정밀 번호, 선택적으로 용기에 사용된다.그것들은 다른 종류에 대해서는 생략된다.

길이는 정수와 같은 관례를 따라 인코딩되며, 따라서 자체 유형을 포함한다.예를 들어, 문자열hello로 암호화되어 있다.S,U,0x05,h,e,l,l,o.

데이터(옵션)

이 유형의 값에 대한 실제 이진수 데이터를 나타내는 바이트 시퀀스.모든 숫자는 큰 엔디안 순서로 되어 있다.

용기종류

JSON과 마찬가지로 UBJSON은 두 가지 유형의 컨테이너를 정의한다.[2]

배열은 원소의 순서가 정렬된 배열로, 다음과 같이 표현된다.[0개 이상의 값 요소와 용기 유형 및 후행 요소].

객체는 원소 집합에 라벨이 붙어 있으며, 이는 다음과 같다.{0개 이상의 키 값 쌍 및 후행}. 각각의 열쇠는 .이 있는 끈이다.S문자가 생략되고 각 "값"은 값 또는 용기 유형의 요소가 될 수 있다.

또는 배열과 객체가 포함하는 요소의 수를 다음과 같이 나타낼 수 있다.#그 다음 첫 번째 요소 앞에 정수(이 경우 후행)가 나타난다.]또는}누락되다또한 모든 원소의 유형이 동일한 경우 그 유형을 생략하고 단일 원소로 교체할 수 있다.$형식 다음에, 이 경우 요소 카운트는 즉시 따라야 한다.예를 들어, 배열 ["a","b","c"는 다음과 같이 나타낼 수 있다.[,$,C,#,U,0x03,a,b,c.

이항 데이터

명시적인 바이너리 유형은 없지만, 이진수 데이터는 강하게 입력된 uint8 값의 배열에 저장된다.이는 JSON이 바이너리 데이터를 직접 지원하지 않더라도 JSON과의 호환성을 유지하면서 바이너리 효율을 보장한다.[3][4]

표현

파일 시스템에 저장할 때 파일 확장자 '.ubj'와 마찬가지로 MIME 유형 'application/ubjson'이 권장된다.[4]

소프트웨어 지원

참고 항목

참조

  1. ^ "Value Types Universal Binary JSON Specification". Retrieved 20 July 2019.
  2. ^ "Container Types Universal Binary JSON Specification". Retrieved 20 July 2019.
  3. ^ "Binary Data Universal Binary JSON Specification". Retrieved 20 July 2019.
  4. ^ a b c "UBJSON (.ubj)—Wolfram Language Documentation". Retrieved 20 July 2019.
  5. ^ "UBJSON Storage Format". Retrieved 20 July 2019.

외부 링크