Comparison of data serialization formats
This article needs additional citations for verification. Please help improve this article by adding reliable references. Unsourced material may be challenged and removed. (August 2009) |
This article is a comparison of data serialization formats, different ways to convert complex objects to sequences of bits. It does not include markup languages used exclusively as document file formats.
Overview
- a. ^ The current default format is binary.
- b. ^ The "classic" format is plain text, and an XML format is also supported.
- c. ^ Theoretically possible due to abstraction, but no implementation is included.
- d. ^ The primary format is binary but a text format is available.[1]
Syntax comparison of human-readable formats
Format | Null | Boolean true | Boolean false | Integer | Floating-point | String | Array | Associative array/Object |
---|---|---|---|---|---|---|---|---|
CSVb | null a(or an empty element in the row)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 to Z,1,2,3 |
Netstringsc | 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
|
JSON | null
|
true
|
false
|
685230 -685230
|
6.8523015e+5
|
"A to Z"
|
[true, null, -42.1e7, "A to Z"]
|
{42: true, "A to Z": [1, 2, 3]}
|
OGDL[verification needed] | 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 true "A to Z" 1 2 3 42 true "A to Z", (1, 2, 3) |
Property list (plain text format)[2] |
Template:N/a | <*BY>
|
<*BN>
|
<*I685230>
|
<*R6.8523015e+5>
|
"A to Z"
|
( <*BY>, <*R-42.1e7>, "A to Z" )
|
{ "42" = <*BY>; "A to Z" = ( <*I1>, <*I2>, <*I3> ); } |
Property list (XML format)[3][4] |
Template:N/a | <true />
|
<false />
|
<integer>685230</integer>
|
<real>6.8523015e+5</real>
|
<string>A to Z</string>
|
<array> <true /> <real>-42.1e7</real> <string>A to Z</string> </array> |
<dict> <key>42</key> <true /> <key>A to Z</key> <array> <integer>1</integer> <integer>2</integer> <integer>3</integer> </array> </dict> |
S-expressions | NIL nil
|
T #t etrue
|
NIL #f efalse
|
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 |
y Y yes Yes YES on On ON true True TRUE [6]
|
n N no No NO off Off OFF false False FALSE [6]
|
685230 +685_230 -685230 02472256 0x_0A_74_AE 0b1010_0111_0100_1010_1110 190:20:30 [7]
|
6.8523015e+5 685.230_15e+03 685_230.15 190:20:30.15 .inf -.inf .Inf .INF .NaN .nan .NAN [8]
|
A to Z "A to Z" 'A to Z'
|
[y, ~, -42.1e7, "A to Z"]
- y - - -42.1e7 - A to Z |
{"John":3.14, "Jane":2.718}
42: y A to Z: [1, 2, 3] |
XMLd | <null /> a
|
<boolean val="true"/> a
|
<boolean val="false"/> a
|
<integer>685230</integer> a
|
<float>6.8523015e+5</float> a
|
A to Z
|
a<array> <element type="boolean">true</element> <element type="null"/> <element type="float">-42.1e7</element> <element type="string">A to Z</element> </array> |
a<associative-array> <entry> <key type="integer">42</key> <value type="boolean">true</value> </entry> <entry> <key type="string">A to Z</key> <value> <array> <element type="integer" val="1"/> <element type="integer" val="2"/> <element type="integer" val="3"/> <array> </value> </entry> </associative-array> |
- a. ^ One possible encoding; the specification document does not specifically give an encoding for this datatype.
- b. ^ The RFC CSV specification only deals with delimiters, newlines, and quote characters; it does not directly deal with serializing programming data structures.
- c. ^ The netstrings specification only deals with nested byte strings; anything else is outside the scope of the specification.
- d. ^ XML in and of itself is not a data serialization language, but many data serialization formats have been derived from it; as such, there are many different ways, in addition to those shown, to serialize programming data structures into XML.
- e. ^ This syntax is not compatible with the Internet-Draft, but is used by some dialects of Lisp.
Comparison of binary formats
Format | Null | Booleans | Integer | Floating-point | String | Array | Associative array/Object |
---|---|---|---|---|---|---|---|
ASN.1 | |||||||
Netstrings | 0:,
|
True: 1:1,
False: |
|||||
OGDL Binary | |||||||
Property list (binary format) |
|||||||
Protocol Buffers[9] | Variable encoding length signed 32-bit: varint encoding of "ZigZag"-encoded value (n << 1) XOR (n >> 31)
Variable encoding length signed 64-bit: "varint encoding of "ZigZag"-encoded |
floats: little-endian binary32 | UTF-8 encoded, preceded by varint-encoded integer length of string in bytes | ||||
Thrift (protocol) |
Notes
- ↑ http://code.google.com/apis/protocolbuffers/docs/reference/cpp/google.protobuf.text_format.html
- ↑ http://www.gnustep.org/resources/documentation/Developer/Base/Reference/NSPropertyList.html
- ↑ http://developer.apple.com/mac/library/documentation/Darwin/Reference/ManPages/man5/plist.5.html
- ↑ http://developer.apple.com/mac/library/documentation/CoreFoundation/Conceptual/CFPropertyLists/Articles/XMLTags.html#//apple_ref/doc/uid/20001172-CJBEJBHH
- ↑ "Null Language-Independent Type for YAML™ Version 1.1". YAML.org. 2005-01-18. http://yaml.org/type/null.html. Retrieved 2009-09-12.
- ↑ 6.0 6.1 "Boolean Language-Independent Type for YAML™ Version 1.1". YAML.org. Clark C. Evans. 2005-01-18. http://yaml.org/type/bool.html. Retrieved 2009-09-12.
- ↑ "Integer Language-Independent Type for YAML Version 1.1". YAML.org. Clark C. Evans. 2005-02-11. http://yaml.org/type/int.html. Retrieved 2009-09-12.
- ↑ "Floating-Point Language-Independent Type for YAML™ Version 1.1". YAML.org. Clark C. Evans. 2005-01-18. http://yaml.org/type/float.html. Retrieved 2009-09-12.
- ↑ http://code.google.com/apis/protocolbuffers/docs/encoding.html
References
If you like SEOmastering Site, you can support it by - BTC: bc1qppjcl3c2cyjazy6lepmrv3fh6ke9mxs7zpfky0 , TRC20 and more...
- Pages with broken file links
- Articles needing additional references from August 2009
- Articles with invalid date parameter in template
- All articles needing additional references
- All pages needing factual verification
- Wikipedia articles needing factual verification from September 2009
- Data serialization formats
- Persistence