데이터 직렬화 형식 비교

Comparison of data-serialization formats

이것은 데이터 직렬화 형식, 복잡한 객체비트 시퀀스로 변환하는 다양한 방법을 비교한 것이다.문서 파일 형식으로만 사용되는 마크업 언어는 포함되지 않는다.

개요

이름 크리에이터-유지관리자 에 기반을 둔 표준화?[definition needed] 사양 2진수? 사람이 읽을 수 있는? 참조를 지원하시겠습니까?e 스키마-IDL? 표준 API 제로 카피 작업 지원
아파치아브로 아파치 소프트웨어 재단 해당 없음 아니요. Apache Avro™ 사양 부분적g 해당 없음 붙박이 C, C#, C++, Java, PHP, Python, Ruby 해당 없음
아파치 파르케 아파치 소프트웨어 재단 해당 없음 아니요. 아파치 파르케 아니요. 아니요. 해당 없음 Java, Python, C++ 아니요.
ASN.1 ISO, IEC, ITU-T 해당 없음 ISO/IEC 8824 / ITU-T X.680 (syntax) 및 ISO/IEC 8825 / ITU-T X.690 (인코딩 규칙) 시리즈X.680, X.681 및 X.683은 구문과 의미론을 정의한다. ECN을 통한 BER, DER, PER, OER 또는 사용자 지정 ECN을 통한 XER, JER, GSER 또는 사용자 정의 f 붙박이 해당 없음 오어
벤코드 브람 코헨(창작자)
비트토렌트, 주식회사(유지자)
해당 없음 사실대로 BitTorrent 프로토콜 규격의 일부 ASCII가 되는 숫자 및 구분자 제외 아니요. 아니요. 아니요. 아니요. 아니요.
베르나르도 라모스 JSON(느리게) 아니요. 빈 사양 아니요. 아니요. 아니요. 아니요.
BSON 몽고DB 제이슨 아니요. BSON 사양 아니요. 아니요. 아니요. 아니요. 아니요.
CBOR 카스텐 보르만, P. 호프만 JSON(느리게) RFC 8949 아니요.
꼬리표를 붙여서
CDDL 아니요. 아니요.
CSV(쉼표로 구분된 값) RFC 작성자:
야코프 샤프라노비치
해당 없음 수많은 비공식 변종들 RFC 4180
(다른 사람보다)
아니요. 아니요. 아니요. 아니요. 아니요.
공통 데이터 표현(CDR) 개체 관리 그룹 해당 없음 일반 ORB 프로토콜 아니요. Ada, C, C++, Java, Cobol, Lisp, Python, Ruby, Smalltalk 해당 없음
D-Bus 메시지 프로토콜 freedesktop.org 해당 없음 D-버스 사양 아니요. 아니요. 부분적
(서명 문자열)
해당 없음
확장 가능한 데이터 표기법 리치 히키 해당 없음 EDN 형식 아니요. 아니요. 클루주어, C#, 파이톤 해당 없음
효율적인 XML 교환(Efficient XML Interchange, EXI) W3C XML, 효율적인 XML 효율적인 XML 교환(Efficient XML Interchange) 1.0 형식 XML XPointer, XPath XML 스키마 DOM, SAX, StAX, XQuery, XPath 해당 없음
플랫버퍼스 구글 해당 없음 아니요. 플랫버퍼스 깃허브 아파치 애로우 부분적
(버퍼 내부)
C++, Java, C#, Go, Python, Rust, JavaScript, PHP, C, Dart, Lua, TypeScript
패스트 인포셋 ISO, IEC, ITU-T XML ITU-T X.891 및 ISO/IEC 24824-1:2007 아니요. XPointer, XPath XML 스키마 DOM, 색스, XQuery, XPath 해당 없음
FHIR 건강 레벨 7 REST 기본 사항 빠른 의료 상호 운용성 리소스 FHIR[1] JSON, XML, 거북이용 Hapi 아니요.
이온 아마존 제이슨 아니요. 아마존 이온 사양 아니요. 이온 스키마 아니요. 해당 없음
자바 직렬화 오라클 코퍼레이션 해당 없음 Java 개체 일련화 아니요. 아니요. 해당 없음
제이슨 더글러스 크록퍼드 자바스크립트 구문 STD 90/RFC 8259
(외부:
RFC 6901,
RFC 6902, ECMA-404, ISO/IEC 21778:2017
아니, 하지만 BSON, Smile, UBJSON을 봐. JSON Pointer(RFC 6901) 또는 JSONPath, JPath, JSPASN, json:select()JSON-LD를 번갈아 사용함 부분적
(JSON Schema Proposal, ASN.1 with JER, Kwalify, Rx, Itemscript Schema), JSON-LD
부분적
(클라리넷, JSONQuery / RQL, JSONPath), JSON-LD
아니요.
메시지 팩 후루하시 사다유키 JSON(느리게) 아니요. MessagePack 형식 지정 아니요. 아니요. 아니요. 아니요.
네트스트링 댄 번스타인 해당 없음 아니요. 그물망txt ASCII 구분 기호 제외 아니요. 아니요. 아니요.
OGDL 롤프 베인 ? 아니요. 사양 이항 명세 경로 사양 스키마 WD 해당 없음
OPC-UA 이진수 OPC 파운데이션 해당 없음 아니요. opcfoundation.org 아니요. 아니요. 아니요. 해당 없음
오픈DDL 에릭 렝기엘 C, PHP 아니요. OpenDDL.org 아니요. 아니요. OpenDDL 라이브러리 해당 없음
PHP 직렬화 형식 PHP 그룹 해당 없음 아니요. 아니요. 해당 없음
피클 (피톤) 귀도 판 로섬 파이톤 사실 PEP로서 PEP 3154 – Pickle 프로토콜 버전 4 아니요. [2] 아니요. 아니요.
속성 목록 NeXT(크리에이터)
사과(유지관리자)
? 부분적 XML 형식에 대한 공개 DTD a b 아니요. ? 코코아, CoreFoundation, OpenStep, GnuStep 아니요.
프로토콜 버퍼(프로토부프) 구글 해당 없음 아니요. 개발자 가이드: 인코딩 부분적d 아니요. 붙박이 C++, Java, C#, Python, Go, Ruby, Objective-C, C, Dart, Perl, PHP, R, Rust, Scala, Swift, Julia, Erlang, D, Haskell, Action Script, Delphi, Elixir, Elm, Erlang, GopherJS, Haskell, Haxe, JavaScript, Kotlin, Lua, Matlab, Mercurt, OCaml, Prolog, Solidity, Typescript, Vala, Visual Basic 아니요.
이더리움 재귀 길이 접두사(RLP) 이더리움 해당 없음 아니요. 사양 아니요. 아니요. 아니요. 얼랑, 고, 자바, 자바스크립트, 코틀린, 목표-C, 파이썬, 스위프트, PHP
S-expressions 존 매카시(원본)
론 리베스트(인터넷 드래프트)
리스프, 넷스트링스 대체로 사실적 "S-Expression" 인터넷 드래프트 예, 표준 표현 예, 고급 전송 표현 아니요. 아니요. 해당 없음
스마일 타투살로란타 제이슨 아니요. 스마일 포맷 사양 아니요. 부분적
(JSON 스키마 제안서, 기타 JSON 스키마/IDL)
부분적
(Smile 백엔드로 구현된 JSON API를 통해, Jackson, Python에서)
해당 없음
비누 W3C XML W3C 권장 사항:
SOAP/1.1
SOAP/1.2
부분적
(효율적인 XML Interchange, 이진 XML, Fast Infoset, MTOM, XSD base64 데이터)
기본 제공 id/ref, XPointer, XPath WSDL, XML 스키마 DOM, 색스, XQuery, XPath 해당 없음
정형 데이터 eXchange 형식 막스 와일드그루베 해당 없음 RFC 3072 아니요. 아니요. 아니요. 해당 없음
아파치 레프트 페이스북(크리에이터)
Apache(유지관리자)
해당 없음 아니요. 원본 백서 부분적c 아니요. 붙박이 C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, 코코아, JavaScript, Node.js, Smalltalk, OCaml, Delphi 및 기타 언어[3] 해당 없음
UBJSON 버즈 미디어, LLC JSON, BSON 아니요. ubjson.org 아니요. 아니요. 아니요. 아니요. 해당 없음
외부 데이터 표현(XDR) Sun Micro시스템s(창작성자)
IETF(유지관리자)
해당 없음 성병 67/RFC 4506 아니요. 해당 없음
XML W3C SGML W3C 권장 사항:
1.0 (제5판)
1.1(제2판)
부분적
(효율적인 XML Interchange, 이진 XML, Fast Infoset, XSD base64 데이터)
XPointer, XPath XML 스키마, REACE NG DOM, 색스, XQuery, XPath 해당 없음
XML-RPC 데이브 위너[4] XML 아니요. XML-RPC 규격 아니요. 아니요. 아니요. 아니요. 아니요.
YAML 클라크 에반스
Ingy döt Net,
오렌 벤키키
C, Java, Perl, Python, Ruby, Email, HTML, MIME, URI, XML, SAX, SOAP, JSON[5] 아니요. 버전 1.2 아니요. 부분적
(Kwalify, Rx, 내장 언어 유형 정의)
아니요. 아니요.
이름 크리에이터-유지관리자 에 기반을 둔 표준화? 사양 2진수? 사람이 읽을 수 있는? 참조를 지원하시겠습니까?e 스키마-IDL? 표준 API 제로 카피 작업 지원
  1. ^ 현재 기본 형식은 이진 형식이다.
  2. ^ "classic" 형식은 일반 텍스트로, XML 형식도 지원된다.
  3. ^ 이론적으로는 추상화 때문에 가능하나, 실행은 포함되지 않는다.
  4. ^ 기본 형식은 이진 형식이지만 텍스트 형식은 사용할 수 있다.[6]
  5. ^ 일반 도구/도서관이 동일한 문서의 다른 데이터에 대한 참조를 인코딩, 디코딩 및 폐기하는 방법을 알고 있음을 의미한다.도구에는 IDL 파일이 필요할 수 있지만 더 이상 필요하지 않다.사용자 정의 비표준 참조 기법은 제외한다.
  6. ^ ASN.1은 X.681(정보 객체 시스템), X.682(규격화), X.683(변수화)을 가지고 있어 정수로, OID 등으로 값의 유형을 식별할 수 있는 개방형식의 정밀한 사양을 가능하게 한다.OID는 값의 구성요소를 참조하기 위한 표준 표기법("절대 참조")뿐만 아니라 전역 고유 식별자의 표준 형식이다.예를 들어, PKIX는 RFC 5912에서 그러한 표기법을 사용한다.이러한 표기법(정보 오브젝트 집합을 사용하는 매개변수화된 유형에 대한 표기법)으로 일반 ASN.1 도구/라이브러리는 문서 내에서 참조를 자동으로 인코딩/디코딩/삭제할 수 있다.
  7. ^ 기본 형식은 이진 형식이며, json 인코더를 사용할 수 있다.[7]

사람이 읽을 수 있는 형식의 구문 비교

포맷 Null 부울 부울 거짓 정수 부동 소수점 배열 연관 배열/개체
ASN.1
(XML 인코딩 규칙)
<foo /> <foo>true</foo> <foo>false</foo> <foo>685230</foo> <foo>6.8523015e+5</foo> <foo>A to Z</foo>
<SeqOfUn 관련Datatypes>는 사실[/isMarried] <hobby /> <velocity>-42.1e7</velocity> <bookname>A to Z</bookname> <bookname>을 참조하라.우리는 "아니오"라고 말했다.</bookname> </SeqOfUn 관련Datatypes>
개체(키란 필드 이름):
<사람이 참된 결혼> <허비 / 결혼> 1.85 </높이> 밥 피터슨 </이름> </사람>

데이터 매핑(핵심은 데이터 값):

<<competition>> <이름>존(John) 3.14</기상> <기상> <기상> 제인(Jane) <기상> 2.718</기상> </기상>

a

CSVb nulla
(또는 행의 빈 요소)a
1a
truea
0a
falsea
685230
-685230a
6.8523015e+5a A to Z
"We said, ""no""."
true,,-42.1e7,"A to Z"
42.1 A ~ Z, 1,2,3
포맷 Null 부울 부울 거짓 정수 부동 소수점 배열 연관 배열/개체
이온

null
null.null
null.bool
null.int
null.float
null.decimal
null.timestamp
null.string
null.symbol
null.blob
null.clob
null.struct
null.list
null.sexp

true false 685230
-685230
0xA74AE
0b111010010101110
6.8523015e5 "A to Z"

'''
A
to
Z
'''
[진실의, 무효의, -42.1e7, "A to Z"] 
{'42': 진실의, 'A to Z': [1, 2, 3]} 
네트스트링c 0:,a
4:null,a
1:1,a
4:true,a
1:0,a
5:false,a
6:685230,a 9:6.8523e+5,a 6:A to Z, 29:4:true,0:,7:-42.1e7,6:A to Z,, 41:9:2:42,1:1,,25:6:A to Z,12:1:1,1:2,1:3,,,,a
제이슨 null true false 685230
-685230
6.8523015e+5 "A to Z"
[진실의, 무효의, -42.1e7, "A to Z"] 
{"42": 진실의, "A to Z": [1, 2, 3]} 
OGDL[필요하다] nulla truea falsea 685230a 6.8523015e+5a "A to Z"
'A to Z'
NoSpaces
true null -42.1e7 "A to Z"

(true, null, -42.1e7, "A to Z")

42 진정한 "A to Z" 1 2 3
42 참 "A to Z", (1, 2, 3)
포맷 Null 부울 부울 거짓 정수 부동 소수점 배열 연관 배열/개체
오픈DDL ref {null} bool {true} bool {false} int32 {685230}
int32 {0x74AE}
int32 {0b111010010101110}
float {6.8523015e+5} string {"A to Z"} 동종 배열:
int32 {1, 2, 3, 4, 5}

이기종 어레이:

어레이 {bool {true} ref {null} 플로트 {-42.1e7} 문자열 {"A to Z"} }
받아쓰기 {값(키 = "42") {bool {true} 값(키 = "A to Z") {int32 {1, 2, 3}}
PHP 직렬화 형식 N; b:1; b:0; i:685230;
i:-685230;
d:685230.15;d
d:INF;
d:-INF;
d:NAN;
s:6:"A to Z"; a:4:{i:0;b:1;i:1;N;i:2;d:-421000000;i:3;s:6:"A to Z";} 연관 배열:
a:2:{i:42;b:1;s:6:"A to Z";a:3:{i:0;i:1;i:1;i:2;i:2;i:3;}}
개체:
O:8:"stdClass":2:{s:4:"John";d:3.14;s:4:"Jane";d:2.718;}d
피클 (피톤) N. I01\n. I00\n. I685230\n. F685230.15\n. S'A to Z'\n. (lI01\na(laF-421000000.0\naS'A to Z'\na. (dI42\nI01\nsS'A to Z'\n(lI1\naI2\naI3\nas.
속성 목록
(문자 형식 변경)[8]
해당 없음 <*BY> <*BN> <*I685230> <*R6.8523015e+5> "A to Z" ( <*BY>, <*R-42.1e7>, "A to Z" )
{ "42" = <*BY>, "A to Z" = (<*I1>, <*I2>, <*I3>; }
속성 목록
(XML 형식)[9]
해당 없음 <true /> <false /> <integer>685230</integer> <real>6.8523015e+5</real> <string>A to Z</string>
<어레이> / <리얼>-42.1e7</리얼>A to Z </스트링> </어레이>
<독점> 42</진실 / 키> A to Z</키> 1</정원>2</정원>3</정원></정원> 3</정원>
프로토콜 버퍼 해당 없음 true false 685230
-685230
20.0855369 "A to Z"
"sdfff2 \000\001\002\377\376\375"
"q\tqq<>q2&\001\377"
field1: "value1" 필드1: "value2" 필드1: "value3"
다른 필드 { foo: 123bar: 456 } 다른 필드 {foo: 222bar: 333 }
물건1: "블라흐블라" 물건2: 18923743 사물3: -44 사물4 {   subessage_field1: "foo"   subessage_field2: 거짓의 } 열거된: SomeEnumeratedValue 사물5: 123.456 [extensionFieldFoo]: "etc" [extensionField ThatIsAnenum]: 열거값 
포맷 Null 부울 부울 거짓 정수 부동 소수점 배열 연관 배열/개체
S-expressions NIL
nil
T
#tf
true
NIL
#ff
false
685230 6.8523015e+5 abc
"abc"
#616263#
3:abc
{MzphYmM=}
YWJj
(T NIL -42.1e7 "A to Z") ((42 T) ("A to Z" (1 2 3)))
YAML ~
null
Null
NULL[10]
y
Y
yes
Yes
YES
on
On
ON
true
True
TRUE[11]
n
N
no
No
NO
off
Off
OFF
false
False
FALSE[11]
685230
+685_230
-685230
02472256
0x_0A_74_AE
0b1010_0111_0100_1010_1110
190:20:30[12]
6.8523015e+5
685.230_15e+03
685_230.15
190:20:30.15
.inf
-.inf
.Inf
.INF
.NaN
.nan
.NAN[13]
A to Z
"A to Z"
'A to Z'
[y, ~, -42.1e7, "A to Z"]
- y - - -42.1e7 - A ~ Z
{"John":3.14, "Jane":2.718}
42: y A ~ Z: [1, 2, 3]
XMLeSOAP <null />a true false 685230 6.8523015e+5 A to Z
<진실> xsi:nil="진실"/"진실"/"진실"/"진실"-42.1e7 "/진실"A to Z.
<맵> <엔트리 키="42" 참 <엔트리="A to Z" > <아이템 val="1"/><아이템 val="2"/><아이템 val="3"/></entry> </map>
XML-RPC <value><boolean>1</boolean></value> <value><boolean>0</boolean></value> <value><int>685230</int></value> <value><double>6.8523015e+5</double></value> <value><string>A to Z</string></value>
<값><값>1</부울><값><더블>-42.1e7</값</더블><값><문자열</값></></></값> A에서 Z까지 </값> </값></값>
<값><값>42</name> <값>1</boolean> </값> </member> <이름>A to Z</name><값>1<</int><값>2<int</int></value>3<int</data></calue></calue </calue></calue </calue></cruction>
  1. ^ 생략 XML 요소는 일반적으로 XML 데이터 바인딩 도구에 의해 NULL로 디코딩된다.여기에 표시된 것은 또 다른 가능한 인코딩이다; XML 스키마는 이 데이터 유형에 대한 인코딩을 정의하지 않는다.
  2. ^ RFC CSV 규격은 구분자, 새 줄 및 따옴표 문자만을 다루며, 프로그래밍 데이터 구조를 직렬화하는 것은 직접 다루지 않는다.
  3. ^ 넷스트링 사양은 중첩된 바이트 문자열만을 다루며, 그 외의 것은 규격의 범위를 벗어난다.
  4. ^ PHP는 모든 부동 소수점 숫자를 올바르게 비직렬화하지만 완전 소수점 확장까지 직렬화한다.예를 들어 3.14는 3.14000000000000012434978758053252467468261875로 직렬화된다.
  5. ^ XML 데이터 바인딩SOAP 직렬화 도구는 XML로 프로그래밍 데이터 구조를 안전하게 직렬화하여 XML 요소와 속성에 배치할 수 있는 XML 값을 나타낸다.
  6. ^ 이 구문은 인터넷-Draft와 호환되지 않지만, Lisp의 일부 방언에서 사용된다.

이진 형식 비교

포맷 Null 불리안스 정수 부동 소수점 배열 연관 배열/개체
ASN.1
(BER, PER 또는 OER 인코딩)
NULL형 부울:
  • BER: 이진 형식의 1바이트;
  • PER: 1비트;
  • OER: 1바이트
정수:
  • BER: 가변 길이 빅 엔디안 이진 표현(최대 2비트21024);
  • PER 정렬되지 않음: 정수 유형이 유한한 경우 고정 비트 수, 그렇지 않은 경우 가변 비트 수;
  • PER 정렬: 정수 유형이 한정된 범위를 가지며 범위 크기가 65536 미만인 경우 고정된 비트 수, 그렇지 않은 경우 가변적인 8진수;
  • OER: 정수 유형이 해당 옥텟 수에 맞는 유한 범위를 가지는 경우 1, 2 또는 4 옥텟(서명 또는 부호 없음); 그 외의 가변 옥텟 수
실제:
  • 기준 10 실제 값은 ISO 6093 형식의 문자열로 표시된다.
  • 이진수 실제 값은 맨티사, 기준(2, 8 또는 16) 및 지수를 포함하는 이진수 형식으로 표시된다.
  • NaN, -INF, +INF, 음의 값도 지원한다.
여러 가지 유효한 유형(VisibleString, PrintableString, GeneralString, UniversalString, UTF8String) 데이터 사양 SET OF(무주문) 및 SEQURED OF(보증 주문) 사용자 정의 가능 유형
\x00
  • 참:\x01
  • 거짓:\x02
엔디안 2의 보완 서명 및 미서명 8/16/32/64 비트 UTF-8 인코딩, null 종료, int8 또는 int32 문자열 길이(바이트) 앞에 있음 유형코드(1바이트) + 1~4바이트 크기 + 1~4바이트 항목 개수 + 목록 항목 형식 코드(1바이트) + 1-4바이트 크기 + 1-4바이트 항목 개수 + 키/값 쌍
BSON \x0A
(1바이트)
참:\x08\x01
거짓:\x08\x00
(2바이트)
int32: 32비트 리틀엔디안 2의 보완책 또는 int64: 64비트 리틀엔디안 2의 보완책 이중: 리틀엔디안 바이너리64 UTF-8 인코딩, 그 뒤에 인코딩된 문자열 길이(바이트 단위)가 있음 BSON 포함 문서(숫자 키 포함) BSON 내장 문서
간결한 이진 개체 표현(CBOR) \xf6
(1바이트)
  • 참:\xf5
  • 거짓:\xf4

(1바이트)

  • 소양/음수\x00\x17&\x20\x37(1바이트)
  • 8비트: 양수\x18, 부정적이다.\x38(+ 1바이트)
  • 16비트: 양수\x19, 부정적이다.\x39(+ 2바이트)
  • 32비트: 양수\x1A, 부정적이다.\x3A(+ 4바이트)
  • 64비트: 양수\x1B, 부정적이다.\x3B(+ 8바이트)
  • (-x - 1)로 인코딩된 음극 x
  • IEEE 반/단일/이중\xf9\xfb(+ 2-8바이트)
  • 로 인코딩된 십진수 및 큰 부동(4+바이트)\xc4태그 + 정수 맨티사 & 지수의 2자리 배열
  • 길이 및 내용(1~9바이트 오버헤드)
  • 바이테스트링\x40\x5f
  • UTF-8 \x60\x7f
  • 무한 부분 문자열\x5f그리고\x7f까지 꿰매다.\xff.
  • 길이 및 항목\x80\x9e
  • 무기명목록\x9f에 의해 종료된.\xff입장권
  • 길이(쌍) 및 항목\xa0\xbe
  • 무기한 지도\xbf에 의해 종료된.\xff핵심을
효율적인 XML 교환(Efficient XML Interchange, EXI)[a]

(보존되지 않은 어휘 값 형식)

xsi:nil은 이진 컨텍스트에서 허용되지 않음 부울로 해석된 1-2비트 정수. 부울 기호와 임의 길이 7비트 8진수, 가장 유의한 비트가 0이 될 때까지 구문 분석(Little-endian).스키마는 임의의 번호로 영점을 설정할 수 있다.

서명되지 않은 사람은 부울 깃발을 생략한다.

  • 플로트: 정수 맨티사 및 정수 지수.
  • 10진수: 부울 기호, 정수 전체 값, 정수 분수
접두사가 붙은 정수 인코딩 유니코드 길이.정수는 대신 열거형 또는 문자열 테이블 항목을 나타낼 수 있다. 품목의 접두사 집합 길이. 의전상으로는 안 된다.
플랫버퍼스 상위 개체에 필드가 없는 것으로 인코딩됨
  • 참:\x01
  • 거짓:\x00

(1바이트)

Little-endian 2의 보완 서명 및 서명되지 않은 8/16/32/64 비트 UTF-8 인코딩, 32비트 정수 길이(바이트) 앞에 있음 32비트 정수 길이 요소 앞에 있는 다른 유형의 벡터 테이블(구성표 정의 유형) 또는 키별로 정렬된 벡터(맵/사전)
이온[14] \x0f[b]
  • 참:\x11
  • 거짓:\x10
  • 긍정적인\x2x, 부정적이다.\x3x
  • 0은 항상 태그 바이트로 인코딩됨
  • 13바이트(104비트) 이상의 BigInt의 길이에는 1바이트 이상의 오버헤드가 있음
  • \x44(32비트 플로트)
  • \x48(64비트 플로트)
  • 0은 항상 태그 바이트로 인코딩됨
  • UTF-8:\x8x
  • 기타 문자열:\x9x
  • 임의 길이 및 오버헤드
\xbx임의 길이 및 오버헤드.길이는 8진수.
  • 구조체(숫자 필드): \xdx
  • 주석(이름 필드): \xex
메시지 팩 \xc0
  • 참:\xc3
  • 거짓:\xc2
  • 단일 바이트 "fixnum"(값 -32 127)
  • 또는 타이프 코드(1바이트) + 빅 엔디안 (u)int8/16/32/64
형식 코드(1바이트) + IEEE 단일/이중
  • 타이프 코드 + 최대 15바이트
  • 또는 uint8/16/32 + 바이트로 타이프 코드 + 길이

인코딩이 지정되지[15] 않음

  • "fixarray"(단일 바이트 접두사 + 최대 15개의 어레이 항목)로 제공
  • 또는 타이프 코드(1바이트) + 2-4바이트 길이 + 배열 항목
  • "fixmap"(단일 바이트 접두사 + 최대 15개의 키 값 쌍)으로 사용
  • 또는 타이프 코드(1바이트) + 2-4바이트 길이 + 키 값 쌍
네트스트링[c] 의전상으로는 안 된다. 의전상으로는 안 된다. 의전상으로는 안 된다. ASCII 문자열 + ':' + 데이터 + ','로 인코딩된 길이

길이는 ':'와 ', 사이의 8진수만 계산한다.

의전상으로는 안 된다. 의전상으로는 안 된다. 의전상으로는 안 된다.
OGDL 이진
속성 목록
(일반 형식)
프로토콜 버퍼
  • 서명된 32비트 가변 인코딩 길이: "ZigZag" 인코딩 값의 varint 인코딩(n << 1) XOR (n >> 31)
  • 서명된 가변 인코딩 길이 64비트: "ZigZag" 인코딩의 varint 인코딩(n << 1) XOR (n >> 63)
  • 일정한 인코딩 길이 32비트: 리틀엔디안 2의 보완재 32비트
  • 일정한 인코딩 길이 64비트: 리틀엔디안 2의 보완재 64비트
UTF-8 인코딩, 그 뒤에 바린트 인코딩 정수 길이(바이트)가 있음 동일한 태그를 가진 반복된 값 또는 바린트 인코딩된 정수에 대해서만 태그와 총 바이트 길이로 접두사가 채워지고 연속적으로 채워진 값 해당 없음
이더리움 재귀 길이 접두사 의전상으로는 안 된다.
\x80(제로 길이 문자열) 자주 사용됨
의전상으로는 안 된다.
정수 0/1이 자주 사용된다.
  • 0–127:\x00\x7f
  • 기타 값:빅 엔디안 인코딩 바이트 문자열, 임의 길이, 다음 문자열로 시작\x80-\xbf
정수 인코딩은 IEEE float로 해석할 수 있다.
  • 접두사 길이, 최대 55바이트:\x80\xb7그 뒤에 데이터가 있다.
  • 56바이트 이상:\xb8\xbf그 다음에 문자열의 1-8바이트 정수 길이와 데이터가 뒤따른다.
  • 접두사 길이, 최대 55바이트:\xc0\xf7그 뒤에 데이터가 있다.
  • 56바이트 이상:\xf8\xff그 다음에 데이터의 1-8바이트 정수 길이, 그 다음에 데이터가 온다.
  • 길이는 목록 항목이 아닌 항상 바이트 단위 입니다.
의전상으로는 안 된다.키/값 쌍 목록 또는 기타 형식 목록으로 인코딩할 수 있다.
스마일 \x21
  • 참:\x23
  • 거짓:\x22
  • 단일 바이트 "작은" (값 -16 15 인코딩 –)\xdf
  • 지그재그로 굽은varints(1–11 데이터 바이트) 또는BigInteger
IEEE 단일/이중,BigDecimal 길이 접두사 "짧은" 문자열(최대 64바이트), 마커 종단 "긴" 문자열 및 (옵션) 백 참조 엔드 마커가 있는 임의 길이 이기종 배열 임의 길이 키/값 쌍(End-Marker 포함)
SDXF(Structured Data eXchange Format) 빅 엔디안이 서명한 24비트 또는 32비트 정수 빅엔디안 IEEE 더블 UTF-8 또는 ISO 8859-1 인코딩 ID와 크기가 동일한 요소 목록(길이 16인 배열 헤더 앞) 청크는 임의 깊이까지 다른 청크를 포함할 수 있음
절약
  1. ^ XML 기반 표현은 XML에 대한 "Schema Informed"(스키마 요구 또는 스키마가 없는 대신) 바이너리 압축 표준인 EXI - Efficient XML Interchange를 사용하여 압축하거나 생성할 수 있다.
  2. ^ 모든 기본 Ion 유형에는 0xXf 태그와 같이 null 변형이 있다.0x0f가 아닌 0x0X로 시작하는 태그는 무시된 패딩을 정의한다.
  3. ^ Netstrings의 해석은 전적으로 애플리케이션 또는 스키마에 의존함

참고 항목

참조

  1. ^ "HAPI FHIR - The Open Source FHIR API for Java". hapifhir.io.
  2. ^ cpython/lib/pickle.파이를 치다
  3. ^ 아파치 레프트
  4. ^ "A Brief History of SOAP". www.xml.com.
  5. ^ Ben-Kiki, Oren; Evans, Clark; Net, Ingy döt (2009-10-01). "YAML Ain't Markup Language (YAML) Version 1.2". The Official YAML Web Site. Retrieved 2012-02-10.
  6. ^ "text_format.h - Protocol Buffers". Google Developers.
  7. ^ "Avro Json Format".
  8. ^ "NSPropertyListSerialization class documentation". www.gnustep.org. Archived from the original on 2011-05-19. Retrieved 2009-10-28.
  9. ^ "Documentation Archive". developer.apple.com.
  10. ^ Oren Ben-Kiki; Clark Evans; Brian Ingerson (2005-01-18). "Null Language-Independent Type for YAML Version 1.1". YAML.org. Retrieved 2009-09-12.
  11. ^ a b Oren Ben-Kiki; Clark Evans; Brian Ingerson (2005-01-18). "Boolean Language-Independent Type for YAML Version 1.1". YAML.org. Clark C. Evans. Retrieved 2009-09-12.
  12. ^ Oren Ben-Kiki; Clark Evans; Brian Ingerson (2005-02-11). "Integer Language-Independent Type for YAML Version 1.1". YAML.org. Clark C. Evans. Retrieved 2009-09-12.
  13. ^ Oren Ben-Kiki; Clark Evans; Brian Ingerson (2005-01-18). "Floating-Point Language-Independent Type for YAML Version 1.1". YAML.org. Clark C. Evans. Retrieved 2009-09-12.
  14. ^ 이온 이진 인코딩
  15. ^ "MessagePack is an extremely efficient object serialization library. It's like JSON, but very fast and small.: msgpack/msgpack". 2 April 2019 – via GitHub.

외부 링크