Esta es una comparación de formatos de serialización de datos , varias formas de convertir objetos complejos en secuencias de bits . No incluye los lenguajes de marcado utilizados exclusivamente como formatos de archivo de documentos .
Descripción general
Nombre | Creador-mantenedor | Residencia en | ¿Estandarizado? [ definición necesaria ] | Especificación | Binario ? | ¿Legible por humanos ? | ¿Soporta referencias ? mi | Esquema- IDL ? | API estándar | Admite operaciones de copia cero |
---|---|---|---|---|---|---|---|---|---|---|
Apache Avro | Fundación de software Apache | N / A | No | Especificación de Apache Avro ™ | sí | Parcial g | N / A | Sí (incorporado) | C, C #, C ++, Java, PHP, Python, Ruby | N / A |
Parquet Apache | Fundación de software Apache | N / A | No | Parquet Apache [1] | sí | No | No | N / A | Java, Python, C ++ | No |
ASN.1 | ISO , IEC , UIT-T | N / A | sí | Series ISO / IEC 8824 / ITU-T X.680 (sintaxis) e ISO / IEC 8825 / ITU-T X.690 (reglas de codificación). X.680, X.681 y X.683 definen sintaxis y semántica. | Sí ( BER , DER , PER , OER o personalizado a través de ECN ) | Sí ( XER , JER , GSER o personalizado a través de ECN ) | Si f | Sí (incorporado) | N / A | Sí ( REA ) |
Bencode | Bram Cohen (creador) BitTorrent, Inc. (mantenedor) | N / A | Estándar de facto a través de la propuesta de mejora de BitTorrent (BEP) | Parte de la especificación del protocolo BitTorrent | Parcialmente (los números y los delimitadores son ASCII) | No | No | No | No | No |
Binn | Bernardo Ramos | JSON (vagamente) | No | Especificación de Binn | sí | No | No | No | No | sí |
[2] Búnker | Matthieu Gindre | MessagePack, BSON, JSON | sí | Especificación de búnker | No | No | sí | No | JavaScript, mecanografiado | No |
BSON | MongoDB | JSON | No | Especificación BSON | sí | No | No | No | No | No |
CBOR | Carsten Bormann, P. Hoffman | JSON (vagamente) | sí | RFC 8949 | sí | No | Sí a través de etiquetado | Sí ( CDDL ) | No | No |
Valores separados por comas (CSV) | Autor del RFC: Yakov Shafranovich | N / A | Parcial (se utilizan innumerables variantes informales) | RFC 4180 (entre otros) | No | sí | No | No | No | No |
Representación común de datos (CDR) | grupo de administración de objetos | N / A | sí | Protocolo general entre ORB | sí | No | sí | sí | Ada, C, C ++, Java, Cobol, Lisp, Python, Ruby, Smalltalk | N / A |
Protocolo de mensajes D-Bus | freedesktop.org | N / A | sí | Especificación D-Bus | sí | No | No | Parcial (cadenas de firmas) | Sí (ver D-Bus ) | N / A |
Notación de datos extensible (EDN) | Cognitect | JSON (vagamente) | sí | Especificación EDN | No | sí | No | No | No | N / A |
Intercambio XML eficiente (EXI) | W3C | XML , XML eficiente | sí | Formato de intercambio XML eficiente (EXI) 1.0 | sí | Sí ( XML ) | Sí ( XPointer , XPath ) | Sí ( esquema XML ) | Sí ( DOM , SAX , StAX , XQuery , XPath ) | N / A |
FlatBuffers | N / A | No | Especificación de página de github flatbuffers | sí | Sí ( flecha Apache ) | Parcial (interno al búfer) | Sí [3] | C ++, Java, C #, Go, Python, Rust, JavaScript, PHP, C, Dart, Lua, TypeScript | sí | |
Infoset rápido | ISO , IEC , UIT-T | XML | sí | ITU-T X.891 e ISO / IEC 24824-1: 2007 | sí | No | Sí ( XPointer , XPath ) | Sí ( esquema XML ) | Sí ( DOM , SAX , XQuery , XPath ) | N / A |
FHIR | Nivel de salud 7 | Conceptos básicos de DESCANSO | sí | Recursos de interoperabilidad de atención médica rápida | sí | sí | sí | sí | Hapi para FHIR [1] JSON , XML , Turtle | No |
Ion | Amazonas | JSON | No | La especificación de Amazon Ion | sí | sí | No | Sí ( esquema de iones ) | No | N / A |
Serialización de Java | Oracle Corporation | N / A | sí | Serialización de objetos Java | sí | No | sí | No | sí | N / A |
JSON | Douglas Crockford | Sintaxis de JavaScript | sí | STD 90 / RFC 8259 (auxiliar: RFC 6901, RFC 6902), ECMA-404 , ISO / IEC 21778: 2017 | No, pero mira BSON , Smile , UBJSON | sí | Sí ( JSON Pointer (RFC 6901) ; alternativamente: JSONPath , JPath , JSPON , json: select () ), JSON-LD | Parcial ( propuesta de esquema JSON , ASN.1 con JER , Kwalify , Rx , esquema Itemscript ), JSON-LD | Parcial ( Clarinete , JSONQuery / RQL , JSONPath ), JSON-LD | No |
MessagePack | Sadayuki Furuhashi | JSON (vagamente) | No | Especificación de formato de MessagePack | sí | No | No | No | No | sí |
Cadenas de red | Dan Bernstein | N / A | No | netstrings.txt | Parcialmente (los delimitadores son ASCII) | sí | No | No | No | sí |
OGDL | Rolf Veen | ? | No | Especificación | Sí ( especificación binaria ) | sí | Sí ( especificación de ruta ) | Sí ( esquema WD ) | N / A | |
OPC-UA Binario | Fundación OPC | N / A | No | opcfoundation.org | sí | No | sí | No | No | N / A |
OpenDDL | Eric Lengyel | C , PHP | No | OpenDDL.org | No | sí | sí | No | Sí ( biblioteca OpenDDL ) | N / A |
Formato de serialización PHP | Grupo PHP | N / A | sí | No | sí | sí | sí | No | sí | N / A |
Pepinillo (Python) | Guido van Rossum | Pitón | Estándar de facto a través de propuestas de mejora de Python (PEP) | [4] PEP 3154 - Protocolo Pickle versión 4 | sí | No | Sí [2] | No | Sí ( [5] ) | No |
Lista de propiedades | NeXT (creador) Apple (mantenedor) | ? | Parcial | DTD pública para formato XML | Si un | Si b | No | ? | Cocoa , CoreFoundation , OpenStep , GnuStep | No |
Búferes de protocolo (protobuf) | N / A | No | Guía para desarrolladores: codificación | sí | Parcial d | No | Sí (incorporado) | 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, Mecanografiado, Vala, Visual Basic | No | |
Prefijo de longitud recursiva de Ethereum (RLP) | Ethereum | N / A | No | Especificación | sí | No | No | No | Erlang, Go, Java, Javascript, Kotlin, Objective-C, Python, Swift, PHP | sí |
Expresiones-S | John McCarthy (original) Ron Rivest (borrador de Internet) | Lisp , cadenas de red | Parcial (en gran parte de facto ) | Borrador de Internet "Expresiones S" | Sí ("representación canónica") | Sí ("Representación de transporte avanzada") | No | No | N / A | |
Sonrisa | Tatu Saloranta | JSON | No | Especificación de formato de sonrisa | sí | No | sí | Parcial ( propuesta de esquema JSON , otros esquemas JSON / IDL) | Parcial (a través de las API JSON implementadas con el backend Smile, en Jackson, Python) | N / A |
JABÓN | W3C | XML | sí | Recomendaciones del W3C : SOAP / 1.1 SOAP / 1.2 | Parcial ( intercambio XML eficiente , XML binario , Fast Infoset , MTOM , datos XSD base64 ) | sí | Sí (id / ref incorporado, XPointer , XPath ) | Sí ( WSDL , esquema XML ) | Sí ( DOM , SAX , XQuery , XPath ) | N / A |
Formatos de intercambio de datos estructurados | Max Wildgrube | N / A | sí | RFC 3072 | sí | No | No | No | N / A | |
Apache Thrift | Facebook (creador) Apache (mantenedor) | N / A | No | Documento técnico original | sí | Parcial c | No | Sí (incorporado) | C ++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C #, Cocoa, JavaScript, Node.js, Smalltalk, OCaml, Delphi y otros lenguajes [3] | N / A |
UBJSON | The Buzz Media, LLC | JSON , BSON | No | [6] | sí | No | No | No | No | N / A |
Representación de datos externos (XDR) | Sun Microsystems (creador) IETF (mantenedor) | N / A | sí | STD 67 / RFC 4506 | sí | No | sí | sí | sí | N / A |
XML | W3C | SGML | sí | Recomendaciones del W3C : 1.0 (Quinta edición) 1.1 (Segunda edición) | Parcial ( intercambio XML eficiente , XML binario , Fast Infoset , datos XSD base64 ) | sí | Sí ( XPointer , XPath ) | Sí ( esquema XML , RELAX NG ) | Sí ( DOM , SAX , XQuery , XPath ) | N / A |
XML-RPC | Dave Winer [4] | XML | No | Especificación XML-RPC | No | sí | No | No | No | No |
YAML | Clark Evans, Ingy döt Net y Oren Ben-Kiki | C , Java , Perl , Python , Ruby , correo electrónico , HTML , MIME , URI , XML , SAX , SOAP , JSON [5] | No | Versión 1.2 | No | sí | sí | Parcial ( Kwalify , Rx , tipo de lenguaje incorporado-defs) | No | No |
Nombre | Creador-mantenedor | Residencia en | ¿Estandarizado? | Especificación | Binario ? | ¿Legible por humanos ? | ¿Soporta referencias ? mi | Esquema- IDL ? | API estándar | Admite operaciones de copia cero |
- una. ^ El formato predeterminado actual es binario.
- B. ^ El formato "clásico" es texto sin formato y también se admite un formato XML.
- C. ^ Teóricamente posible debido a la abstracción, pero no se incluye ninguna implementación.
- D. ^ El formato principal es binario, pero hay un formato de texto disponible. [6]
- mi. ^ Significa que las herramientas / bibliotecas genéricas saben cómo codificar, decodificar y desreferenciar una referencia a otro dato en el mismo documento. Una herramienta puede requerir el archivo IDL , pero no más. No incluye técnicas de referencia personalizadas y no estandarizadas.
- F. ^ ASN.1 tiene X.681 (Sistema de objetos de información), X.682 (Restricciones) y X.683 (Parametrización) que permiten la especificación precisa de tipos abiertos donde los tipos de valores se pueden identificar por números enteros, por OID , etc. Los OID son un formato estándar para identificadores únicos globales, así como una notación estándar ("referencia absoluta") para hacer referencia a un componente de un valor. Por ejemplo, PKIX usa tal notación en RFC 5912. Con tal notación (restricciones en tipos parametrizados usando conjuntos de objetos de información), las herramientas / bibliotecas ASN.1 genéricas pueden codificar / decodificar / resolver automáticamente referencias dentro de un documento.
- gramo. ^ El formato principal es binario, hay disponible un codificador json. [7]
Comparación de sintaxis de formatos legibles por humanos
Formato | Nulo | Booleano verdadero | Booleano falso | Entero | Punto flotante | Cuerda | Formación | Matriz asociativa / Objeto |
---|---|---|---|---|---|---|---|---|
ASN.1 (reglas de codificación XML) | | | | | | |
| Un objeto (la clave es un nombre de campo):
Un mapeo de datos (la clave es un valor de datos):
a |
CSV b | null a(o un elemento vacío en la fila) a | 1 un true a | 0 un false a | 685230 -685230 a | 6.8523015e+5 a | A to Z "We said, ""no""." | true,,-42.1e7,"A to Z" | 42,1A a Z, 1,2,3 |
Formato | Nulo | Booleano verdadero | Booleano falso | Entero | Punto flotante | Cuerda | Formación | Matriz asociativa / Objeto |
Ion |
| true | false | 685230 -685230 0xA74AE 0b111010010101110 | 6.8523015e5 | "A to Z" ''' | [ verdadero , nulo , -42.1e7 , "A to Z" ] | { '42' : verdadero , 'A to Z' : [ 1 , 2 , 3 ]} |
Cuerdas de red c | 0:, un 4:null, a | 1:1, un 4:true, a | 1:0, un 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 |
JSON | null | true | false | 685230 -685230 | 6.8523015e+5 | "A to Z" | [ verdadero , nulo , -42.1e7 , "A to Z" ] | { "42" : verdadero , "A to Z" : [ 1 , 2 , 3 ]} |
OGDL [ verificación necesaria ] | null a | true a | false a | 685230 a | 6.8523015e+5 a | "A to Z" 'A to Z' NoSpaces | ciertonulo-42.1e7"De la A a la Z"
| 42 cierto"De la A a la Z" 1 2 3 42 cierto"De la A a la Z", (1, 2, 3) |
Formato | Nulo | Booleano verdadero | Booleano falso | Entero | Punto flotante | Cuerda | Formación | Matriz asociativa / Objeto |
OpenDDL | ref {null} | bool {true} | bool {false} | int32 {685230} int32 {0x74AE} int32 {0b111010010101110} | float {6.8523015e+5} | string {"A to Z"} | Matriz homogénea: int32 {1, 2, 3, 4, 5} Matriz heterogénea: formación{ bool {true} ref {null} flotar {-42.1e7} cadena {"A to Z"}} | dictar{ valor (clave = "42") {bool {true}} valor (clave = "A a Z") {int32 {1, 2, 3}}} |
Formato de serialización 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";} | Matriz asociativa: 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;}} Objeto: O:8:"stdClass":2:{s:4:"John";d:3.14;s:4:"Jane";d:2.718;} d |
Pepinillo (Python) | 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. |
Lista de propiedades (formato de texto sin formato) [8] | N / A | <*BY> | <*BN> | <*I685230> | <*R6.8523015e+5> | "A to Z" | ( <*BY>, <*R-42.1e7>, "A to Z" ) | { "42" = <* POR>; "A a Z" = (<* I1>, <* I2>, <* I3>);} |
Lista de propiedades (formato XML) [9] | N / A | | | | | |
|
|
Búferes de protocolo | N / A | true | false | 685230 -685230 | 20.0855369 | "A to Z" | campo1: "valor1"campo1: "valor2"campo1: "valor3 otro campo { foo: 123 barra: 456}otro campo { foo: 222 barra: 333} | thing1 : "blahblah" thing2 : 18923743 thing3 : - 44 thing4 { submessage_field1 : "foo" submessage_field2 : false } enumeratedThing : SomeEnumeratedValue thing5 : 123.456 [ extensionFieldFoo ] : "etc" [ extensionFieldThatIsAnEnum ] : EnumValue |
Formato | Nulo | Booleano verdadero | Booleano falso | Entero | Punto flotante | Cuerda | Formación | Matriz asociativa / Objeto |
Expresiones-S | 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- De la A a la Z | {"John":3.14, "Jane":2.718} 42: yDe la A a la Z: [1, 2, 3] |
XML e y SOAP | a | true | false | 685230 | 6.8523015e+5 | A to Z |
| |
XML-RPC | | | | | |
|
|
- una. ^ Las herramientas de enlace de datos XML suelen decodificar los elementos XML omitidos como NULL. Aquí se muestra otra posible codificación; El esquema XML no define una codificación para este tipo de datos.
- B. ^ La especificación RFC CSV solo trata con delimitadores, líneas nuevas y comillas; no trata directamente con la serialización de estructuras de datos de programación .
- C. ^ La especificación netstrings solo trata con cadenas de bytes anidadas ; cualquier otra cosa está fuera del alcance de la especificación.
- D. ^ PHP anulará la serialización de cualquier número de coma flotante correctamente, pero los serializará a su expansión decimal completa. Por ejemplo, 3.14 se serializará a 3.140000000000000124344978758017532527446746826171875.
- mi. ^ Los enlaces de datos XML y las herramientas de serialización SOAP proporcionan serialización XML segura de tipos de estructuras de datos de programación en XML. Se muestran valores XML que se pueden colocar en elementos y atributos XML.
- F. ^ Esta sintaxis no es compatible con Internet-Draft, pero es utilizada por algunos dialectos de Lisp .
Comparación de formatos binarios
Formato | Nulo | Booleanos | Entero | Punto flotante | Cuerda | Formación | Matriz asociativa / Objeto |
---|---|---|---|---|---|---|---|
ASN.1 ( codificación BER , PER o OER ) | Tipo nulo | BOOLEANO:
| ENTERO:
| VERDADERO: los valores reales en base 10 se representan como cadenas de caracteres en formato ISO 6093; los valores reales binarios se representan en un formato binario que incluye la mantisa, la base (2, 8 o 16) y el exponente; también se admiten los valores especiales NaN, -INF, + INF y cero negativo | Varios tipos válidos (VisibleString, PrintableString, GeneralString, UniversalString, UTF8String) | especificaciones de datos SET OF (desordenado) y SEQUENCE OF (pedido garantizado) | tipo definible por el usuario |
Binn | \x00 | Verdadero: \x01 Falso: \x02 | complemento de big-endian 2 firmado y sin firmar 8/16/32/64 bits | single : big-endian binary32 doble : big-endian binary64 | Codificado en UTF-8 , terminado en nulo, precedido por int8 o int32 longitud de cadena en bytes | Código de tipo (un byte) + tamaño de 1-4 bytes + recuento de elementos de 1-4 bytes + elementos de lista | Código de tipo (un byte) + tamaño de 1-4 bytes + recuento de elementos de 1-4 bytes + pares clave / valor |
Búnker | Cualquier tipo puede ser anulable. El primer byte de un valor que acepta valores NULL indica si el valor es nulo ( \x00 ), indefinido ( \x01 ) o bien definido ( \x02 ). Si está bien definido, el valor sigue. | Verdadero: \x01 Falso: \x00 | Variante de VLQ denominada enteros elásticos. El primer bit es para la señal. El segundo bit del primer byte y el primer bit de todos los demás bytes son los bits de continuación. | doble : little-endian binary64 | Codificado en UTF-8 , terminado en nulo. Puede ser referenciado. | Longitud prefijada del conjunto de elementos. Se pueden codificar matrices con propiedades, así como conjuntos. | Pares clave / valor. Los mapas también se pueden codificar. |
BSON | \x0A (1 byte) | Verdadero: \x08\x01 Falso: \x08\x00 (2 bytes) | int32: 32 bits ascendente hacia la izquierda complemento a 2 o Int64: 64 bits ascendente hacia la izquierda complemento a 2 | doble : little-endian binary64 | Codificado en UTF-8 , precedido por una longitud de cadena codificada en int32 en bytes | Documento integrado BSON con teclas numéricas | Documento incrustado BSON |
Representación concisa de objetos binarios (CBOR) | \xf6 (1 byte) | Verdadero: \xf5 Falso: \xf4 (1 byte) | Pequeño positivo / negativo \x00-\x17 y \x20-\x37 (1 byte)8 bits: positivo | IEEE medio / simple / doble \xf9 - \xfb (+ 2-8 bytes)Decimales y bigfloats (más de 4 bytes) codificados como | Longitud y contenido (1-9 bytes de sobrecarga) Bytestring | Longitud y artículos \x80 -\x9e Lista indefinida | Longitud (en pares) y artículos \xa0 -\xbe Mapa indefinido |
Intercambio XML eficiente (EXI) [a] (Formato de valores léxicos sin preservar) | xsi: nil no está permitido en contexto binario | Entero de 1-2 bits interpretado como booleano. | Signo booleano, más octetos de 7 bits de longitud arbitraria, analizados hasta que el bit más significativo sea 0, en little-endian. El esquema puede establecer el punto cero en cualquier número arbitrario. Unsigned omite la bandera booleana. | Flotante: mantisa entera y exponente entero. Decimal: signo booleano, valor entero entero, entero fraccionario | Longitud prefijada Unicode con codificación entera. En su lugar, los números enteros pueden representar enumeraciones o entradas de tabla de cadenas. | Longitud prefijada del conjunto de elementos. | No en el protocolo. |
FlatBuffers | Codificado como ausencia de campo en el objeto principal | Verdadero: un byte \x01 Falso: \x00 | complemento de little-endian 2 firmado y sin firmar 8/16/32/64 bits | flota : little-endian binary32 dobles : little-endian binary64 | Codificado en UTF-8 , precedido por un entero de 32 bits de longitud de cadena en bytes | Vectores de cualquier otro tipo, precedidos por una longitud entera de 32 bits del número de elementos | Tablas (tipos definidos por esquema) o Vectores ordenados por clave (mapas / diccionarios) |
Ión [14] | \x0f [B] | Cierto: \x11 Falso: | positivo \x2x , negativo\x3x El cero siempre se codifica en el byte de etiqueta | \x44 (Flotante de 32 bits) \x48 ( flotante de 64 bits)El cero siempre se codifica en el byte de la etiqueta. | UTF-8 :\x8x Otras cadenas: | \xbx Longitud y gastos indirectos arbitrarios. Longitud en octetos. | Estructuras (campos numerados): \xdx Anotaciones (campos con nombre): |
MessagePack | \xc0 | Verdadero: \xc3 Falso: \xc2 | "Fixnum" de un solo byte (valores -32..127) o código de tipo (un byte) + big-endian (u) int8 / 16/32/64 | Typecode (un byte) + IEEE simple / doble | Typecode + hasta 15 bytes o typecode + longitud como uint8 / 16/32 + bytes; la codificación no está especificada [15] | Como "fixarray" (prefijo de un solo byte + hasta 15 elementos de la matriz) o código de tipo (un byte) + 2-4 bytes de longitud + elementos de matriz | Como "fixmap" (prefijo de un solo byte + hasta 15 pares clave-valor) o código de tipo (un byte) + 2–4 bytes de longitud + pares clave-valor |
Cadenas de red [c] | No en el protocolo. | No en el protocolo. | No en el protocolo. | Longitud codificada como una cadena ASCII + ':' + datos + ',' La longitud cuenta solo los octetos entre ':' y ',' | No en el protocolo. | No en el protocolo. | No en el protocolo. |
Binario OGDL | |||||||
Lista de propiedades (formato binario) | |||||||
Búferes de protocolo | Longitud de codificación variable con signo de 32 bits: codificación varint del valor codificado en "ZigZag" (n << 1) XOR (n >> 31) Longitud de codificación variable con signo de 64 bits: codificación varint de codificación en "ZigZag" Longitud de | flota : little-endian binary32 dobles : little-endian binary64 | Codificado en UTF-8 , precedido por un entero codificado con varint longitud de la cadena en bytes | Valor repetido con la misma etiqueta o, solo para enteros codificados con varint, valores empaquetados de forma contigua y con el prefijo de etiqueta y longitud total de bytes | N / A | ||
Prefijo de longitud recursiva de Ethereum | No en el protocolo.
| No en el protocolo. Entero 0/1 de uso frecuente. | 0-127: \x00 -\x7f Otros valores: cadenas de bytes codificados en big-endian, de longitud arbitraria , que comienzan con | Las codificaciones de números enteros se pueden interpretar como flotantes IEEE. | Longitud prefijada, hasta 55 bytes: \x80 - \xb7 seguido de datos.56+ bytes: | Longitud prefijada, hasta 55 bytes: \xc0 - \xf7 seguido de datos.56+ bytes: | No en el protocolo. Puede codificarse como listas de listas de pares clave / valor u otros formatos. |
Sonrisa | \x21 | Verdadero: \x23 Falso: \x22 | Un byte "pequeño" (valores -16..15 codificados con \xc0 - \xdf ),
| IEEE simple / doble, BigDecimal | Cadenas "cortas" con prefijo de longitud (hasta 64 bytes), cadenas "largas" terminadas en marcadores y referencias inversas (opcionales) | Matrices heterogéneas de longitud arbitraria con marcador final | Pares clave / valor de longitud arbitraria con marcador de fin |
Formatos de intercambio de datos estructurados (SDXF) | entero de 24 o 32 bits con signo big-endian | IEEE doble big-endian | ya sea UTF-8 o ISO 8859-1 codificados | lista de elementos con ID y tamaño idénticos, precedidos por un encabezado de matriz con longitud int16 | los trozos pueden contener otros trozos hasta una profundidad arbitraria | ||
Ahorro |
- ^ Cualquier representación basada en XML se puede comprimir o generar como, utilizando EXI - Efficient XML Interchange , que es un estándar de compresión binaria "basado en esquema" (en contraposición al esquema requerido o sin esquema) para XML.
- ^ Todos los tipos de iones básicos tienen una variante nula, como su etiqueta 0xXf. Cualquier etiqueta que comience con 0x0X que no sea 0x0f define el relleno ignorado.
- ^ La interpretación de Netstrings depende completamente de la aplicación o del esquema
Ver también
- Comparación de lenguajes de marcado de documentos
Referencias
- ^ "HAPI FHIR - La API FHIR de código abierto para Java" . hapifhir.io .
- ^ cpython / Lib / pickle.py
- ^ Ahorro Apache
- ^ "Una breve historia de SOAP" . www.xml.com .
- ^ Ben-Kiki, Oren; Evans, Clark; Net, Ingy döt (1 de octubre de 2009). "YAML no es lenguaje de marcado (YAML) versión 1.2" . El sitio web oficial de YAML . Consultado el 10 de febrero de 2012 .
- ^ "text_format.h - Búferes de protocolo" . Desarrolladores de Google .
- ^ "Formato Avro Json" .
- ^ "Documentación de la clase NSPropertyListSerialization" . www.gnustep.org . Archivado desde el original el 19 de mayo de 2011 . Consultado el 28 de octubre de 2009 .
- ^ "Archivo de documentación" . developer.apple.com .
- ^ Oren Ben-Kiki; Clark Evans; Brian Ingerson (18 de enero de 2005). "Tipo independiente del idioma nulo para YAML versión 1.1" . YAML.org . Consultado el 12 de septiembre de 2009 .
- ^ a b Oren Ben-Kiki; Clark Evans; Brian Ingerson (18 de enero de 2005). "Tipo independiente del lenguaje booleano para YAML versión 1.1" . YAML.org . Clark C. Evans . Consultado el 12 de septiembre de 2009 .
- ^ Oren Ben-Kiki; Clark Evans; Brian Ingerson (11 de febrero de 2005). "Tipo independiente del lenguaje entero para YAML versión 1.1" . YAML.org . Clark C. Evans . Consultado el 12 de septiembre de 2009 .
- ^ Oren Ben-Kiki; Clark Evans; Brian Ingerson (18 de enero de 2005). "Tipo independiente del lenguaje de coma flotante para la versión 1.1 de YAML" . YAML.org . Clark C. Evans . Consultado el 12 de septiembre de 2009 .
- ^ Codificación binaria de iones
- ^ "MessagePack es una biblioteca de serialización de objetos extremadamente eficiente. Es como JSON, pero muy rápido y pequeño .: msgpack / msgpack" . 2 de abril de 2019 - a través de GitHub.
enlaces externos
- Propuesta XML-QL que analiza los beneficios de XML
- Atreverse a hacer menos con XML