Porovnání formátů serializace dat - Comparison of data-serialization formats
Tohle je srovnání serializace dat formáty, různé způsoby převodu komplexu předměty na sekvence bity. Nezahrnuje to značkovací jazyky používá se výhradně jako formáty souborů dokumentů.
Přehled
název | Správce tvůrců | Na základě | Standardizované? | Specifikace | Binární ? | Člověk čitelný ? | Podporuje Reference ?E | Schéma-IDL ? | Standard API | Podporuje Nulové kopírování operace |
---|---|---|---|---|---|---|---|---|---|---|
Apache Avro | Softwarová nadace Apache | N / A | Ne | Specifikace Apache Avro ™ | Ano | Částečnýj | N / A | Ano (vestavěný) | C, C #, C ++, Java, PHP, Python, Ruby | N / A |
Apache Parkety | Softwarová nadace Apache | N / A | Ne | Apache Parkety[1] | Ano | Ne | Ne | N / A | Java, Python, C ++ | Ne |
ASN.1 | ISO, IEC, ITU-T | N / A | Ano | ISO / IEC 8824; Série doporučení ITU-T řady X.680 | Ano (BER, DER, ZA, OER nebo vlastní prostřednictvím ECN ) | Ano (XER, JER, GSER nebo vlastní prostřednictvím ECN ) | ČástečnýF | Ano (vestavěný) | N / A | Ano (OER ) |
Bencode | Bram Cohen (tvůrce) BitTorrent, Inc. (správce) | N / A | De facto standardně prostřednictvím BitTorrent Enhancement Proposal (BEP) | Část Specifikace protokolu BitTorrent | Částečně (čísla a oddělovače jsou ASCII) | Ne | Ne | Ne | Ne | Ne |
Binn | Bernardo Ramos | N / A | Ne | Specifikace Binn | Ano | Ne | Ne | Ne | Ne | Ano |
BSON | MongoDB | JSON | Ne | Specifikace BSON | Ano | Ne | Ne | Ne | Ne | Ne |
CBOR | Carsten Bormann, P. Hoffman | JSON (volně) | Ano | RFC 7049 | Ano | Ne | Ano prostřednictvím značkování | Ano (CDDL ) | Ne | Ne |
Hodnoty oddělené čárkami (CSV) | Autor RFC: Jakov Shafranovič | N / A | Částečný (nesčetné použité neformální varianty) | RFC 4180 (mezi ostatními) | Ne | Ano | Ne | Ne | Ne | Ne |
Společná reprezentace údajů (CDR) | Skupina pro správu objektů | N / A | Ano | Obecný protokol Inter-ORB | Ano | Ne | Ano | Ano | ADA, C, C ++, Java, Cobol, Lisp, Python, Ruby, Smalltalk | N / A |
D-Bus Protokol zpráv | freedesktop.org | N / A | Ano | Specifikace D-Bus | Ano | Ne | Ne | Částečný (Podpisové řetězce) | Ano (vidět D-Bus ) | N / A |
Extensible Data Notation (EDN) | Cognitect | JSON (volně) | Ano | Specifikace EDN | Ne | Ano | Ne | Ne | Ne | N / A |
Efektivní výměna XML (EXI) | W3C | XML, Efektivní XML | Ano | Efektivní formát XML Interchange (EXI) 1.0 | Ano | Ano (XML ) | Ano (XPointer, XPath ) | Ano (Schéma XML ) | Ano (DOM, SAXOFON, StAX, XQuery, XPath ) | N / A |
FlatBuffers | N / A | Ne | flatbuffers github stránka Specifikace | Ano | Ano (Apache Arrow ) | Částečný (interně do vyrovnávací paměti) | Ano [2] | C ++, Java, C #, Go, Python, Rust, JavaScript, PHP, C, Dart, Lua, TypeScript | Ano | |
Rychlá infoset | ISO, IEC, ITU-T | XML | Ano | ITU-T X.891 a ISO / IEC 24824-1: 2007 | Ano | Ne | Ano (XPointer, XPath ) | Ano (Schéma XML ) | Ano (DOM, SAXOFON, XQuery, XPath ) | N / A |
FHIR | Úroveň zdraví 7 | ZBYTEK základy | Ano | Rychlé zdroje interoperability zdravotní péče | Ano | Ano | Ano | Ano | Hapi pro FHIR[1] JSON, XML, Želva | Ne |
Ion | Amazonka | JSON | Ne | Specifikace iontů Amazon | Ano | Ano | Ne | Ano (Ionové schéma ) | Ne | N / A |
Jáva serializace | Oracle Corporation | N / A | Ano | Serializace objektů Java | Ano | Ne | Ano | Ne | Ano | N / A |
JSON | Douglas Crockford | Syntaxe JavaScriptu | Ano | STD 90 /RFC 8259 (vedlejší: RFC 6901, RFC 6902 ), ECMA-404, ISO / IEC 21778: 2017 | Ne, ale uvidíš BSON, Usměj se, UBJSON | Ano | Ano (Ukazatel JSON (RFC 6901); střídavě: JSONPath, JPath, JSPON, json: select () ), JSON-LD | Částečný (Návrh schématu JSON, ASN.1 s JER, Kwalify, Rx, Schéma položky ), JSON-LD | Částečný (Klarinet, JSONQuery / RQL, JSONPath ), JSON-LD | Ne |
MessagePack | Sadayuki Furuhashi | JSON (volně) | Ne | Specifikace formátu MessagePack | Ano | Ne | Ne | Ne | Ne | Ano |
Netstrings | Dan Bernstein | N / A | Ne | netstrings.txt | Částečně (oddělovače jsou ASCII) | Ano | Ne | Ne | Ne | Ano |
OGDL | Rolf Veen | ? | Ne | Specifikace | Ano (Binární specifikace ) | Ano | Ano (Specifikace cesty ) | Ano (Schéma WD ) | N / A | |
OPC-UA binární | Nadace OPC | N / A | Ne | opcfoundation.org | Ano | Ne | Ano | Ne | Ne | N / A |
OpenDDL | Eric Lengyel | C, PHP | Ne | OpenDDL.org | Ne | Ano | Ano | Ne | Ano (Knihovna OpenDDL ) | N / A |
Formát serializace PHP | Skupina PHP | N / A | Ano | Ne | Ano | Ano | Ano | Ne | Ano | N / A |
Lák (Python) | Guido van Rossum | Krajta | De facto standardně prostřednictvím návrhů na vylepšení Pythonu (PEP) | [3] PEP 3154 - Pickle Protocol verze 4 | Ano | Ne | Ano[2] | Ne | Ano ([4] ) | Ne |
Seznam nemovitostí | Další (tvůrce) Jablko (správce) | ? | Částečný | Veřejný DTD pro formát XML | AnoA | Anob | Ne | ? | Kakao, CoreFoundation, OpenStep, GnuStep | Ne |
Vyrovnávací paměti protokolu (protobuf) | N / A | Ne | Příručka pro vývojáře: Kódování | Ano | Částečnýd | Ne | Ano (vestavěný) | 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 | Ne | |
Ethereum Předpona rekurzivní délky (RLP) | Ethereum | N / A | Ne | Specifikace | Ano | Ne | Ne | Ne | Erlang, Go, Java, Javascript, Kotlin, Objective-C, Python, Swift, PHP | Ano |
S-výrazy | John McCarthy (originál) Ron Rivest (internetový koncept) | Lisp, Netstrings | Částečný (převážně de facto) | „S-výrazy“ Koncept internetu | Ano („Kanonické vyobrazení“) | Ano („Pokročilá reprezentace dopravy“) | Ne | Ne | N / A | |
Usměj se | Tatu Saloranta | JSON | Ne | Specifikace formátu úsměvu | Ano | Ne | Ne | Částečný (Návrh schématu JSON, další schémata / IDL JSON) | Částečný (prostřednictvím rozhraní JSON API implementovaných pomocí Smile backend, v Jacksonu, Pythonu) | N / A |
MÝDLO | W3C | XML | Ano | Doporučení W3C: SOAP / 1.1 SOAP / 1.2 | Částečný (Efektivní výměna XML, Binární XML, Rychlá infoset, MTOM, XSD data base64) | Ano | Ano (vestavěné id / ref, XPointer, XPath ) | Ano (WSDL, Schéma XML ) | Ano (DOM, SAXOFON, XQuery, XPath ) | N / A |
Formáty pro výměnu strukturovaných dat | Max Wildgrube | N / A | Ano | RFC 3072 | Ano | Ne | Ne | Ne | N / A | |
Apache Thrift | Facebook (tvůrce) Apache (správce) | N / A | Ne | Původní bílá kniha | Ano | ČástečnýC | Ne | Ano (vestavěný) | C ++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C #, kakao, JavaScript, Node.js, Smalltalk, OCaml, Delphi a další jazyky[3] | N / A |
UBJSON | Buzz Media, LLC | JSON, BSON | Ne | [5] | Ano | Ne | Ne | Ne | Ne | N / A |
Externí reprezentace dat (XDR) | Sun Microsystems (tvůrce) IETF (udržovatel) | N / A | Ano | STD 67 /RFC 4506 | Ano | Ne | Ano | Ano | Ano | N / A |
XML | W3C | SGML | Ano | Doporučení W3C: 1.0 (páté vydání) 1.1 (druhé vydání) | Částečný (Efektivní výměna XML, Binární XML, Rychlá infoset, XSD data base64) | Ano | Ano (XPointer, XPath ) | Ano (Schéma XML, RELAX NG ) | Ano (DOM, SAXOFON, XQuery, XPath ) | N / A |
XML-RPC | Dave Winer[4] | XML | Ne | Specifikace XML-RPC | Ne | Ano | Ne | Ne | Ne | Ne |
YAML | Clark Evans, Ingy döt Net, a Oren Ben-Kiki | C, Jáva, Perl, Krajta, Rubín, E-mailem, HTML, MIM, URI, XML, SAXOFON, MÝDLO, JSON[5] | Ne | Verze 1.2 | Ne | Ano | Ano | Částečný (Kwalify, Rx, vestavěný typ jazyka defs) | Ne | Ne |
název | Správce tvůrců | Na základě | Standardizované? | Specifikace | Binární ? | Člověk čitelný ? | Podporuje Reference ?E | Schéma-IDL ? | Standard API | Podporuje Nulové kopírování operace |
- A. ^ Aktuální výchozí formát je binární.
- b. ^ „Klasický“ formát je prostý text a podporuje se také formát XML.
- C. ^ Teoreticky možné díky abstrakci, ale není zahrnuta žádná implementace.
- d. ^ Primární formát je binární, ale je k dispozici textový formát.[6]
- E. ^ Znamená, že obecné nástroje / knihovny vědí, jak kódovat, dekódovat a zrušit odkaz na jinou část dat ve stejném dokumentu. Nástroj může vyžadovat IDL soubor, ale už ne. Nezahrnuje vlastní nestandardizované techniky odkazování.
- F. ^ ASN.1 nabízí OID, standardní formát globálně jedinečných identifikátorů a standardní notace („absolutní reference“) pro odkazování na komponentu hodnoty. Bylo by tedy možné odkazovat na komponentu kódované hodnoty přítomné v dokumentu kombinací OID (přiřazeného k dokumentu) a „absolutního odkazu“ na komponentu hodnoty. Neexistuje však žádný standardní způsob, jak označit, že pole obsahuje takový absolutní odkaz. Obecný nástroj / knihovna ASN.1 proto nemůže automaticky kódovat / dekódovat / řešit odkazy v dokumentu bez pomoci programového kódu napsaného na zakázku.
- G. ^ VelocyPack nabízí typ hodnoty pro ukládání ukazatelů na jiné položky VPack. Je povoleno, pokud jsou data VPack uložena v paměti, ale ne pokud jsou uložena na disku nebo odeslána přes síť.
- h. ^ Primární formát je binární, ale je k dispozici textový formát.[7][8]
- i. ^ Primární formát je binární, ale k dispozici jsou textové a JSON formáty.[9]
- j. ^ Primární formát je binární, k dispozici je kodér JSON.[10]
Syntaxe srovnání formátů čitelných člověkem
Formát | Nula | Booleovský skutečný | Booleovský Nepravdivé | Celé číslo | Plovoucí bod | Tětiva | Pole | Asociativní pole /Objekt |
---|---|---|---|---|---|---|---|---|
ASN.1 (Pravidla kódování XML) | <foo /> | <foo>true</foo> | <foo>false</foo> | <foo>685230</foo> | <foo>6.8523015e+5</foo> | <foo>A to Z</foo> | <SeqOfUnrelatedDatatypes> <isMarried>skutečný</isMarried> | Objekt (klíč je název pole): <person> <isMarried>skutečný</isMarried> Mapování dat (klíč je datová hodnota): <competition> <measurement> <name>John</name> <height>3.14</height> </measurement> <measurement> <name>Jane</name> <height>2.718</height> </measurement></competition> |
CSVb | nula A(nebo prázdný prvek v řádku)A | 1 Askutečný A | 0 ANepravdivé A | 685230 -685230 A | 6,8523015e + 5 A | A až Z. „Řekli jsme:“ „ne“ „.“ | true ,, - 42,1e7, "od A do Z" | 42,1A až Z, 1,2,3 |
Formát | Nula | Booleovský skutečný | Booleovský Nepravdivé | Celé číslo | Plovoucí bod | Tětiva | Pole | Asociativní pole /Objekt |
Ion |
| skutečný | Nepravdivé | 685230 -685230 0xA74AE 0b111010010101110 | 6.8523015e5 | „Od A do Z“ ''' | [skutečný, nula, -42,1e7, „Od A do Z“] | {'42': skutečný, „A až Z“: [1, 2, 3]} |
NetstringsC | 0:, A4: null, A | 1:1, A4: pravda, A | 1:0, A5: nepravda, A | 6:685230, A | 9: 6,8523e + 5, A | 6: od A do Z, | 29: 4: true, 0:, 7: -42,1e7,6: od A do Z ,, | 41: 9: 2: 42,1: 1,, 25: 6: od A do Z, 12: 1: 1,1: 2,1: 3 ,,,, A |
JSON | nula | skutečný | Nepravdivé | 685230 -685230 | 6,8523015e + 5 | „Od A do Z“ | [skutečný, nula, -42,1e7, „Od A do Z“] | {"42": skutečný, „Od A do Z“: [1, 2, 3]} |
OGDL[je nutné ověření ] | nula A | skutečný A | Nepravdivé A | 685230 A | 6,8523015e + 5 A | „Od A do Z“ „A až Z“ NoSpaces | truenull-42.1e7 "od A do Z"
| 42 true "A to Z" 1 2 3 42 true "A to Z", (1, 2, 3) |
Formát | Nula | Booleovský skutečný | Booleovský Nepravdivé | Celé číslo | Plovoucí bod | Tětiva | Pole | Asociativní pole /Objekt |
OpenDDL | ref {null} | bool {true} | bool {false} | int32 {685230} int32 {0x74AE} int32 {0b111010010101110} | float {6.8523015e + 5} | řetězec {"A až Z"} | Homogenní pole:int32 {1, 2, 3, 4, 5} Heterogenní pole: array {bool {true} ref {null} float {-42.1e7} string {"A to Z"}} | dict {value (key = "42") {bool {true}} value (key = "A to Z") {int32 {1, 2, 3}}} |
Formát serializace PHP | N; | b: 1; | b: 0; | i: 685230; i: -685230; | d: 685230,15; dd: INF; d: -INF; d: NAN; | s: 6: „A až Z“; | a: 4: {i: 0; b: 1; i: 1; N; i: 2; d: -421000000; i: 3; s: 6: "A až Z";} | Asociativní pole:a: 2: {i: 42; b: 1; s: 6: „od A do Z“; a: 3: {i: 0; i: 1; i: 1; i: 2; i: 2; i: 3;}} Objekt: O: 8: "stdClass": 2: {s: 4: "John"; d: 3,14; s: 4: "Jane"; d: 2,718;} d |
Lák (Python) | N. | I01 n. | I00 n. | I685230 n. | F685230.15 n. | S'A do Z ' n. | (lI01 na (laF-421000000.0 naS'A až Z ' na. | (dI42 nI01 nsS'A až Z ' n (lI1 naI2 naI3 nas. |
Seznam nemovitostí (formát prostého textu)[11] | N / A | <*BY> | <*BN> | <*I685230> | <*R6.8523015e+5> | „Od A do Z“ | (<* BY>, <* R-42.1e7>, "A až Z") | {"42" = <* BY>; "A až Z" = (<* I1>, <* I2>, <* I3>);} |
Seznam nemovitostí (Formát XML)[12] | N / A | <true /> | <false /> | <integer>685230</integer> | <real>6.8523015e+5</real> | <string>A to Z</string> | <array> | <dict> <key>42</key> |
Vyrovnávací paměti protokolu | N / A | skutečný | Nepravdivé | 685230 -685230 | 20.0855369 | „Od A do Z“ | pole1: "hodnota1" pole1: "hodnota2" pole1: "hodnota3 anotherfield {foo: 123 bar: 456} anotherfield {foo: 222 bar: 333} | věc 1: "blahblah"věc2: 18923743věc3: -44věc4 { submessage_field1: "foo" submessage_field2: Nepravdivé}enumeratedThing: SomeEnumeratedValuevěc5: 123.456[extensionFieldFoo]: "atd"[extensionFieldThatIsAnEnum]: EnumValue |
Formát | Nula | Booleovský skutečný | Booleovský Nepravdivé | Celé číslo | Plovoucí bod | Tětiva | Pole | Asociativní pole /Objekt |
S-výrazy | NULA nula | T # t Fskutečný | NULA #F FNepravdivé | 685230 | 6,8523015e + 5 | abc „abc“ #616263# 3: abc {MzphYmM =} | YWJj | | (T NIL -42,1e7 "od A do Z") | ((42 T) ("A až Z" (1 2 3))) |
YAML | ~ nula Nula NULA [13] | y Y Ano Ano ANO na Na NA skutečný Skutečný SKUTEČNÝ [14] | n N Ne Ne NE vypnuto Vypnuto VYPNUTO Nepravdivé Nepravdivé NEPRAVDIVÉ [14] | 685230 +685_230 -685230 02472256 0x_0A_74_AE 0b1010_0111_0100_1010_1110 190:20:30 [15] | 6,8523015e + 5 685.230_15e + 03 685_230.15 190:20:30.15 .inf -.inf .Inf .INF .NaN .nan .NAN [16] | A až Z. „Od A do Z“ „A až Z“ | [y, ~, -42,1e7, "A až Z"] - y-- -42,1e7- od A do Z. | {"John": 3.14, "Jane": 2.718} 42: yA až Z: [1, 2, 3] |
XMLE a MÝDLO | <null /> A | skutečný | Nepravdivé | 685230 | 6,8523015e + 5 | A až Z. | <item>skutečný</item> | <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> | <value><array> <data> <value><boolean>1</boolean></value> <value><double>-42,1e7</double></value> <value><string>A až Z.</string></value> </data> </array></value> | <value><struct> <member> <name>42</name> <value><boolean>1</boolean></value> </member> <member> <name>A až Z.</name> <value> <array> <data> <value><int>1</int></value> <value><int>2</int></value> <value><int>3</int></value> </data> </array> </value> </member></struct> |
- A. ^ Vynechané prvky XML jsou běžně dekódovány pomocí Datová vazba XML nástroje jako NULL. Zde je zobrazeno další možné kódování; Schéma XML nedefinuje kódování pro tento datový typ.
- b. ^ Specifikace RFC CSV se zabývá pouze oddělovači, novými řádky a znaky uvozovek; nezabývá se přímo serializačním programováním datové struktury.
- C. ^ The síťové struny specifikace se zabývá pouze vnořenými bajtové řetězce; cokoli jiného je mimo rozsah specifikace.
- d. ^ PHP správně unserializuje jakékoli číslo s plovoucí desetinnou čárkou, ale bude je serializovat do jejich úplného desetinného rozšíření. Například 3.14 bude serializováno na 3.140000000000000124344978758017532527446746826171875.
- E. ^ Vázání dat XML a MÝDLO nástroje pro serializaci poskytují typově bezpečnou XML serializaci programování datové struktury do XML. Zobrazeny jsou hodnoty XML, které lze umístit do prvků a atributů XML.
- F. ^ Tato syntaxe není kompatibilní s Internetovým konceptem, ale používají ji některé dialekty Lisp.
Porovnání binárních formátů
Formát | Nula | Booleovci | Celé číslo | Plovoucí bod | Tětiva | Pole | Asociativní pole /Objekt |
---|---|---|---|---|---|---|---|
ASN.1 (BER, ZA nebo OER kódování) | Typ NULL | BOOLEAN:
| CELÉ ČÍSLO:
| NEMOVITÝ: reálné hodnoty base-10 jsou reprezentovány jako řetězce znaků ve formátu ISO 6093; binární reálné hodnoty jsou reprezentovány v binárním formátu, který zahrnuje mantisu, základnu (2, 8 nebo 16) a exponent; podporovány jsou také speciální hodnoty NaN, -INF, + INF a záporná nula | Více platných typů (VisibleString, PrintableString, GeneralString, UniversalString, UTF8String) | specifikace dat SADA (neuspořádáno) a SEKVENCE (zaručená objednávka) | uživatelem definovatelný typ |
Binn | x00 | Skutečný: x01 Nepravdivé: x02 | big-endian Doplněk 2 podepsané a nepodepsané bity 8/16/32/64 | singl: big-endian binary32 dvojnásobek: big-endian binary64 | UTF-8 kódovaný, zakončený nulou, před kterým je délka řetězce int8 nebo int32 v bajtech | Typový kód (jeden bajt) + velikost 1-4 bajtů + počet položek 1-4 bajty + seznam položek | Typový kód (jeden bajt) + velikost 1–4 bajty + 1–4 bajty počet položek + páry klíč / hodnota |
BSON | x0A (1 bajt) | Skutečný: x08 x01 Nepravdivé: x08 x00 (2 bajty) | int32: 32 bitů malý Endian Doplněk 2 nebo int64: 64bitový malý Endian Doplněk 2 | dvojnásobek: malý Endian binary64 | UTF-8 kódovaný, před kterým je délka řetězce kódovaného int32 v bajtech | BSON vložený dokument s numerickými klávesami | BSON vložený dokument |
Stručné znázornění binárních objektů (CBOR) | xf6 (1 bajt) | Skutečný: xf5 Nepravdivé: xf4 (1 bajt) | Malý pozitivní / negativní x00- x17 & x20- x37 (1 bajt)8bitové: kladné | IEEE poloviční / single / double xf9 - xfb (+ 2-8 bajtů)Desetinná místa a velké vločky (4+ bajty) kódované jako | Délka a obsah (režie 1-9 bajtů) Bytestring | Délka a položky x80 - x9e Neomezený seznam | Délka (v párech) a předměty xa0 - xbe Neomezená mapa |
Efektivní výměna XML (EXI)[A] (Formát nezachovaných lexikálních hodnot) | xsi: nil není v binárním kontextu povolen | 1–2 bitové celé číslo interpretované jako booleovské. | Logické znaménko plus 7bitové oktety s libovolnou délkou, analyzované tak, aby nejvýznamnější bit byl 0, v malém endianu. Schéma může nastavit nulový bod na libovolné libovolné číslo. Nepodepsaný přeskočí logickou vlajku. | Float: celočíselná mantisa a celočíselný exponent. Desetinné: logické znaménko, celé číslo celá hodnota, celé číslo zlomkové | Předpona Unicode kódovaná celými čísly. Celá čísla mohou místo toho představovat výčty nebo položky tabulky řetězců. | Sada položek s předponou délky. | Ne v protokolu. |
FlatBuffers | Zakódováno jako absence pole v nadřazeném objektu | Pravda: jeden bajt x01 Nepravdivé: x00 | malý Endian Doplněk 2 podepsané a nepodepsané bity 8/16/32/64 | plováky: malý Endian binary32 | UTF-8 kódováno, před kterým je 32bitová celá délka řetězce v bajtech | Vektory jakéhokoli jiného typu, kterým předchází 32bitová celočíselná délka počtu prvků | Tabulky (typy definované schématem) nebo vektory seřazené podle klíče (mapy / slovníky) |
Ion[17] | x0f [b] | Skutečný: x11 Nepravdivé: | pozitivní x2x , negativní x3x Nula je vždy zakódována do bajtu značky | x44 (32bitový plovák) x48 (64bitový plovák)Nula je vždy zakódována do bajtu značky | UTF-8: x8x Ostatní struny: | xbx Libovolná délka a režie. Délka v oktetech. | Struktury (očíslovaná pole): xdx Anotace (pojmenovaná pole): |
MessagePack | xc0 | Skutečný: xc3 Nepravdivé: xc2 | Single byte "fixnum" (hodnoty -32..127) ortypecode (jeden bajt) + big-endian (u) int8 / 16/32/64 | Typový kód (jeden bajt) + IEEE single / double | Typový kód + až 15 bajtů nebo typový kód + délka jako uint8 / 16/32 + bajty; kódování není specifikováno[18] | Jako „fixarray“ (jednobajtová předpona + až 15 položek pole) ortypecode (jeden bajt) + délka 2–4 bajty + položky pole | Jako „fixmap“ (jednobajtová předpona + až 15 párů klíč – hodnota) ortypecode (jeden bajt) + 2–4 bajty délka + páry klíč – hodnota |
Netstrings[C] | Ne v protokolu. | Ne v protokolu. | Ne v protokolu. | Délka kódovaná jako řetězec ASCII + ':' + data + ',' Délka počítá pouze oktety mezi znaky „:“ a „,“ | Ne v protokolu. | Ne v protokolu. | Ne v protokolu. |
OGDL Binární | |||||||
Seznam nemovitostí (binární formát) | |||||||
Vyrovnávací paměti protokolu | Proměnná délka kódování se znaménkem 32 bitů: kódování varianty s hodnotou „ZigZag“ (n << 1) XOR (n >> 31) Variabilní délka kódování se znaménkem 64 bitů: kódování varintu s kódováním „ZigZag“ | plováky: malý Endian binary32 | UTF-8 zakódováno, před kterým je celočíselná délka řetězce s kódováním varint v bajtech | Opakovaná hodnota se stejnou značkou nebo pouze pro celá čísla kódovaná pomocí varintu, hodnoty souvisle zabalené a předponou značky a celkové délky bajtu | N / A | ||
Předpona rekurzivní délky | Ne v protokolu.
| Ne v protokolu. Celé číslo 0/1 se často používá. | 0 - 127: x00 - x7f Další hodnoty: Řetězce bajtů kódovaných big-endianem, z libovolná délka, počínaje | Kódování celých čísel lze interpretovat jako float IEEE. | Délka s předponou, až 55 bajtů: x80 - xb7 následované údaji.56+ bajtů: | Délka s předponou, až 55 bajtů: xc0 - xf7 následované údaji.56+ bajtů: | Ne v protokolu. Mohou být zakódovány jako seznamy seznamů párů klíč / hodnota nebo v jiných formátech. |
Usměj se | x21 | Skutečný: x23 Nepravdivé: x22 | Jeden bajt „malý“ (hodnoty -16..15 kódované pomocí xc0 - xdf ),zakódováno klikatě | IEEE single / double, BigDecimal | „Krátké“ řetězce s předponou délky (až 64 bytů), „dlouhé“ řetězce zakončené značkou a (volitelně) zpětné odkazy | Heterogenní pole libovolné délky s koncovou značkou | Páry klíč / hodnota libovolné délky s koncovou značkou |
Formáty pro výměnu strukturovaných dat (SDXF) | big-endian podepsané 24bitové nebo 32bitové celé číslo | big-endian IEEE double | buď UTF-8 nebo ISO 8859-1 | seznam prvků se stejným ID a velikostí, kterému předchází záhlaví pole s délkou int16 | bloky mohou obsahovat další bloky do libovolné hloubky | ||
Šetrnost |
- ^ Libovolnou reprezentaci založenou na XML lze komprimovat nebo generovat pomocí EXI - efektivní výměna XML, což je standard „binární komprese“ (na rozdíl od schématu vyžadovaného nebo bez schématu) pro binární kompresi pro XML.
- ^ Všechny základní typy iontů mají nulovou variantu jako značku 0xXf. Jakákoli značka začínající na 0x0X jiná než 0x0f definuje ignorované odsazení.
- ^ Interpretace Netstrings je zcela závislá na aplikaci nebo schématu
Viz také
Reference
- ^ „HAPI FHIR - Open FHIR API pro Javu“. hapifhir.io.
- ^ https://github.com/python/cpython/blob/v3.9.0/Lib/pickle.py#L137-L144
- ^ https://thrift.apache.org/
- ^ „Stručná historie protokolu SOAP“. www.xml.com.
- ^ Ben-Kiki, Oren; Evans, Clark; Net, Ingy döt (01.10.2009). „YAML není značkovací jazyk (YAML) verze 1.2“. Oficiální web YAML. Citováno 2012-02-10.
- ^ "text_format.h - Vyrovnávací paměti protokolu". Google Developers.
- ^ "Cap'n Proto serializace / RPC systém: základní nástroje a knihovna C ++ - capnproto / capnproto". 2. dubna 2019 - prostřednictvím GitHub.
- ^ „Cap'n Proto: The capnp Tool“. capnproto.org.
- ^ „Fast Binary Encoding je ultra rychlé a univerzální řešení pro serializaci pro C ++, C #, Go, Java, JavaScript, Kotlin, Python, Ruby: chronoxor / FastBinaryEncoding“. 2. dubna 2019 - prostřednictvím GitHub.
- ^ „Avro Json Format“.
- ^ "Dokumentace třídy NSPropertyListSerialization". www.gnustep.org. Archivovány od originál dne 19. 05. 2011. Citováno 2009-10-28.
- ^ "Archiv dokumentace". developer.apple.com.
- ^ Oren Ben-Kiki; Clark Evans; Brian Ingerson (18.01.2005). „Null Language-Independent Type for YAML verze 1.1“. YAML.org. Citováno 2009-09-12.
- ^ A b Oren Ben-Kiki; Clark Evans; Brian Ingerson (18.01.2005). „Boolean Language-Independent Type for YAML verze 1.1“. YAML.org. Clark C. Evans. Citováno 2009-09-12.
- ^ Oren Ben-Kiki; Clark Evans; Brian Ingerson (11.02.2005). „Integer Language-Independent Type for YAML verze 1.1“. YAML.org. Clark C. Evans. Citováno 2009-09-12.
- ^ Oren Ben-Kiki; Clark Evans; Brian Ingerson (18.01.2005). „Typ s plovoucí desetinnou čárkou nezávislý na jazyce pro YAML verze 1.1“. YAML.org. Clark C. Evans. Citováno 2009-09-12.
- ^ http://amzn.github.io/ion-docs/docs/binary.html
- ^ „MessagePack je extrémně efektivní knihovna serializace objektů. Je to jako JSON, ale velmi rychlé a malé .: msgpack / msgpack“. 2. dubna 2019 - prostřednictvím GitHub.