데이터 직렬화 형식 비교
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 | 제로 카피 작업 지원 |
- ^ 현재 기본 형식은 이진 형식이다.
- ^ "classic" 형식은 일반 텍스트로, XML 형식도 지원된다.
- ^ 이론적으로는 추상화 때문에 가능하나, 실행은 포함되지 않는다.
- ^ 기본 형식은 이진 형식이지만 텍스트 형식은 사용할 수 있다.[6]
- ^ 일반 도구/도서관이 동일한 문서의 다른 데이터에 대한 참조를 인코딩, 디코딩 및 폐기하는 방법을 알고 있음을 의미한다.도구에는 IDL 파일이 필요할 수 있지만 더 이상 필요하지 않다.사용자 정의 비표준 참조 기법은 제외한다.
- ^ ASN.1은 X.681(정보 객체 시스템), X.682(규격화), X.683(변수화)을 가지고 있어 정수로, OID 등으로 값의 유형을 식별할 수 있는 개방형식의 정밀한 사양을 가능하게 한다.OID는 값의 구성요소를 참조하기 위한 표준 표기법("절대 참조")뿐만 아니라 전역 고유 식별자의 표준 형식이다.예를 들어, PKIX는 RFC 5912에서 그러한 표기법을 사용한다.이러한 표기법(정보 오브젝트 집합을 사용하는 매개변수화된 유형에 대한 표기법)으로 일반 ASN.1 도구/라이브러리는 문서 내에서 참조를 자동으로 인코딩/디코딩/삭제할 수 있다.
- ^ 기본 형식은 이진 형식이며, 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</기상> </기상> |
CSVb | null a(또는 행의 빈 요소)a | 1 atrue a | 0 afalse a | 685230 -685230 a | 6.8523015e+5 a | A to Z "We said, ""no""." | true,,-42.1e7,"A to Z" | 42.1 A ~ Z, 1,2,3 |
포맷 | Null | 부울 참 | 부울 거짓 | 정수 | 부동 소수점 | 끈 | 배열 | 연관 배열/개체 |
이온 |
| true | false | 685230 -685230 0xA74AE 0b111010010101110 | 6.8523015e5 | "A to Z" ''' | [진실의, 무효의, -42.1e7, "A to Z"] | {'42': 진실의, 'A to Z': [1, 2, 3]} |
네트스트링c | 0:, a4:null, a | 1:1, a4:true, a | 1:0, a5: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[필요하다] | null a | true a | false a | 685230 a | 6.8523015e+5 a | "A to Z" 'A to Z' NoSpaces | 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; dd: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" | 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 #t ftrue | NIL #f ffalse | 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] |
XMLe 및 SOAP | <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> |
- ^ 생략 XML 요소는 일반적으로 XML 데이터 바인딩 도구에 의해 NULL로 디코딩된다.여기에 표시된 것은 또 다른 가능한 인코딩이다; XML 스키마는 이 데이터 유형에 대한 인코딩을 정의하지 않는다.
- ^ RFC CSV 규격은 구분자, 새 줄 및 따옴표 문자만을 다루며, 프로그래밍 데이터 구조를 직렬화하는 것은 직접 다루지 않는다.
- ^ 넷스트링 사양은 중첩된 바이트 문자열만을 다루며, 그 외의 것은 규격의 범위를 벗어난다.
- ^ PHP는 모든 부동 소수점 숫자를 올바르게 비직렬화하지만 완전 소수점 확장까지 직렬화한다.예를 들어 3.14는 3.14000000000000012434978758053252467468261875로 직렬화된다.
- ^ XML 데이터 바인딩과 SOAP 직렬화 도구는 XML로 프로그래밍 데이터 구조를 안전하게 직렬화하여 XML 요소와 속성에 배치할 수 있는 XML 값을 나타낸다.
- ^ 이 구문은 인터넷-Draft와 호환되지 않지만, Lisp의 일부 방언에서 사용된다.
이진 형식 비교
포맷 | Null | 불리안스 | 정수 | 부동 소수점 | 끈 | 배열 | 연관 배열/개체 |
---|---|---|---|---|---|---|---|
ASN.1 (BER, PER 또는 OER 인코딩) | NULL형 | 부울:
| 정수:
| 실제:
| 여러 가지 유효한 유형(VisibleString, PrintableString, GeneralString, UniversalString, UTF8String) | 데이터 사양 SET OF(무주문) 및 SEQURED OF(보증 주문) | 사용자 정의 가능 유형 |
빈 | \x00 |
| 빅 엔디안 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바이트) |
(1바이트) |
|
|
|
|
|
효율적인 XML 교환(Efficient XML Interchange, EXI)[a] (보존되지 않은 어휘 값 형식) | xsi:nil은 이진 컨텍스트에서 허용되지 않음 | 부울로 해석된 1-2비트 정수. | 부울 기호와 임의 길이 7비트 8진수, 가장 유의한 비트가 0이 될 때까지 구문 분석(Little-endian).스키마는 임의의 번호로 영점을 설정할 수 있다. 서명되지 않은 사람은 부울 깃발을 생략한다. |
| 접두사가 붙은 정수 인코딩 유니코드 길이.정수는 대신 열거형 또는 문자열 테이블 항목을 나타낼 수 있다. | 품목의 접두사 집합 길이. | 의전상으로는 안 된다. |
플랫버퍼스 | 상위 개체에 필드가 없는 것으로 인코딩됨 |
(1바이트) | Little-endian 2의 보완 서명 및 서명되지 않은 8/16/32/64 비트 | UTF-8 인코딩, 32비트 정수 길이(바이트) 앞에 있음 | 32비트 정수 길이 요소 앞에 있는 다른 유형의 벡터 | 테이블(구성표 정의 유형) 또는 키별로 정렬된 벡터(맵/사전) | |
이온[14] | \x0f [b] |
|
|
|
| \xbx 임의 길이 및 오버헤드.길이는 8진수. |
|
메시지 팩 | \xc0 |
|
| 형식 코드(1바이트) + IEEE 단일/이중 |
인코딩이 지정되지[15] 않음 |
|
|
네트스트링[c] | 의전상으로는 안 된다. | 의전상으로는 안 된다. | 의전상으로는 안 된다. | ASCII 문자열 + ':' + 데이터 + ','로 인코딩된 길이 길이는 ':'와 ', 사이의 8진수만 계산한다. | 의전상으로는 안 된다. | 의전상으로는 안 된다. | 의전상으로는 안 된다. |
OGDL 이진 | |||||||
속성 목록 (일반 형식) | |||||||
프로토콜 버퍼 | UTF-8 인코딩, 그 뒤에 바린트 인코딩 정수 길이(바이트)가 있음 | 동일한 태그를 가진 반복된 값 또는 바린트 인코딩된 정수에 대해서만 태그와 총 바이트 길이로 접두사가 채워지고 연속적으로 채워진 값 | 해당 없음 | ||||
이더리움 재귀 길이 접두사 | 의전상으로는 안 된다. \x80 (제로 길이 문자열) 자주 사용됨 | 의전상으로는 안 된다. 정수 0/1이 자주 사용된다. |
| 정수 인코딩은 IEEE float로 해석할 수 있다. |
|
| 의전상으로는 안 된다.키/값 쌍 목록 또는 기타 형식 목록으로 인코딩할 수 있다. |
스마일 | \x21 |
|
| IEEE 단일/이중,BigDecimal | 길이 접두사 "짧은" 문자열(최대 64바이트), 마커 종단 "긴" 문자열 및 (옵션) 백 참조 | 엔드 마커가 있는 임의 길이 이기종 배열 | 임의 길이 키/값 쌍(End-Marker 포함) |
SDXF(Structured Data eXchange Format) | 빅 엔디안이 서명한 24비트 또는 32비트 정수 | 빅엔디안 IEEE 더블 | UTF-8 또는 ISO 8859-1 인코딩 | ID와 크기가 동일한 요소 목록(길이 16인 배열 헤더 앞) | 청크는 임의 깊이까지 다른 청크를 포함할 수 있음 | ||
절약 |
- ^ XML 기반 표현은 XML에 대한 "Schema Informed"(스키마 요구 또는 스키마가 없는 대신) 바이너리 압축 표준인 EXI - Efficient XML Interchange를 사용하여 압축하거나 생성할 수 있다.
- ^ 모든 기본 Ion 유형에는 0xXf 태그와 같이 null 변형이 있다.0x0f가 아닌 0x0X로 시작하는 태그는 무시된 패딩을 정의한다.
- ^ Netstrings의 해석은 전적으로 애플리케이션 또는 스키마에 의존함
참고 항목
참조
- ^ "HAPI FHIR - The Open Source FHIR API for Java". hapifhir.io.
- ^ cpython/lib/pickle.파이를 치다
- ^ 아파치 레프트
- ^ "A Brief History of SOAP". www.xml.com.
- ^ 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.
- ^ "text_format.h - Protocol Buffers". Google Developers.
- ^ "Avro Json Format".
- ^ "NSPropertyListSerialization class documentation". www.gnustep.org. Archived from the original on 2011-05-19. Retrieved 2009-10-28.
- ^ "Documentation Archive". developer.apple.com.
- ^ 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.
- ^ 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.
- ^ 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.
- ^ 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.
- ^ 이온 이진 인코딩
- ^ "MessagePack is an extremely efficient object serialization library. It's like JSON, but very fast and small.: msgpack/msgpack". 2 April 2019 – via GitHub.