データシリアル化形式の比較

ウィキペディアから、無料の百科事典
ナビゲーションにジャンプ 検索にジャンプ

これは、データシリアル化形式の比較であり、複雑な オブジェクトをビットのシーケンスに変換するさまざまな方法です。ドキュメントファイル形式としてのみ使用されるマークアップ言語は含まれません

概要

名前 クリエーター-メンテナー に基づく 標準化?[定義が必要] 仕様 バイナリ 人間が読める形式 参照をサポートしますか?e スキーマ-IDL 標準API ゼロコピー操作 をサポートします
Apache Avro Apache Software Foundation 該当なし いいえ ApacheAvro™仕様 はい 部分的g 該当なし ビルトイン C、C#、C ++、Java、PHP、Python、Ruby 該当なし
アパッチパーケット Apache Software Foundation 該当なし いいえ アパッチパーケット はい いいえ いいえ 該当なし Java、Python、C ++ いいえ
ASN.1 ISOIECITU-T 該当なし はい ISO / IEC 8824 / ITU-T X.680(構文)およびISO / IEC 8825 / ITU-T X.690(エンコード規則)シリーズ。X.680、X.681、およびX.683は、構文とセマンティクスを定義します。 BERDERPEROER 、またはECN経由のカスタム XERJERGSER、またはECN経由のカスタム はいf ビルトイン 該当なし OER
ベンコード Bram Cohen(作成者)
BitTorrent、Inc.(メンテナ)
該当なし BEPとしての事実上の BitTorrentプロトコル仕様の一部 数字と区切り文字を除いて、ASCIIである いいえ いいえ いいえ いいえ いいえ
ビン ベルナルド・ラモス JSON(大まかに) いいえ ビン仕様 はい いいえ いいえ いいえ いいえ はい
BSON MongoDB JSON いいえ BSON仕様 はい いいえ いいえ いいえ いいえ いいえ
CBOR カルステン・ボルマン、P。ホフマン JSON(大まかに) はい RFC 8949 はい いいえ はい、
タグ付けを通じて
CDDL いいえ いいえ
カンマ区切り値(CSV) RFC作成者:
Yakov Shafranovich
該当なし 無数の非公式な変種 RFC 4180
(とりわけ)
いいえ はい いいえ いいえ いいえ いいえ
共通データ表現(CDR) オブジェクト管理グループ 該当なし はい 一般的なORB間プロトコル はい いいえ はい はい Ada、C、C ++、Java、Cobol、Lisp、Python、Ruby、Smalltalk 該当なし
D-Busメッセージプロトコル freedesktop.org 該当なし はい D-Busの仕様 はい いいえ いいえ 部分的
(署名文字列)
はい 該当なし
拡張可能なデータ表記 リッチヒッキー 該当なし はい edn-format いいえ はい はい いいえ Clojure、C#、Python 該当なし
効率的なXMLインターチェンジ(EXI) W3C XML、効率的なXML はい Efficient XML Interchange(EXI)Format 1.0 はい XML XPointerXPath XMLスキーマ DOMSAXStAXXQueryXPath 該当なし
FlatBuffers グーグル 該当なし いいえ Flatbuffers GitHub はい アパッチアロー 部分的
(バッファの内部)
はい C ++、Java、C#、Go、Python、Rust、JavaScript、PHP、C、Dart、Lua、TypeScript はい
高速インフォセット ISOIECITU-T XML はい ITU-TX.891およびISO/IEC 24824-1:2007 はい いいえ XPointerXPath XMLスキーマ DOMSAXXQueryXPath 該当なし
FHIR 健康レベル7 RESTの基本 はい FastHealthcareの相互運用性リソース はい はい はい はい Hapi for FHIR [1] JSONXMLTurtle いいえ
イオン アマゾン JSON いいえ アマゾンイオン仕様 はい はい いいえ イオンスキーマ いいえ 該当なし
Javaシリアル化 オラクル株式会社 該当なし はい Javaオブジェクトのシリアル化 はい いいえ はい いいえ はい 該当なし
JSON ダグラス・クロックフォード JavaScript構文 はい STD 90 / RFC 8259
(付属:
RFC 6901、
RFC 6902)、ECMA-404ISO / IEC 21778:2017
いいえ、ただしBSONSmileUBJSONを参照してください はい JSONポインター(RFC  6901)、または代わりに、JSONPathJPathJSPONjson:select() ; およびJSON-LD 部分的
JSONスキーマ提案ASN.1 with JERKwalifyRxItemscript Schema)、JSON-LD
部分的
クラリネットJSONQuery / RQLJSONPath)、JSON-LD
いいえ
MessagePack 古橋貞之 JSON(大まかに) いいえ MessagePack形式の仕様 はい いいえ いいえ いいえ いいえ はい
ネットストリング ダン・バーンスタイン 該当なし いいえ netstrings.txt ASCII区切り文字を除く はい いいえ いいえ いいえ はい
OGDL Rolf Veen いいえ 仕様 バイナリ仕様 はい パス仕様 スキーマWD 該当なし
OPC-UAバイナリ OPC Foundation 該当なし いいえ opcfoundation.org はい いいえ はい いいえ いいえ 該当なし
OpenDDL エリック・レンジェル CPHP いいえ OpenDDL.org いいえ はい はい いいえ OpenDDLライブラリ 該当なし
PHPシリアル化フォーマット PHPグループ 該当なし はい いいえ はい はい はい いいえ はい 該当なし
ピクルス(Python) グイドヴァンロッサム Python PEPとしての事実上の PEP 3154 –ピクルスプロトコルバージョン4 はい いいえ はい[2] いいえ はい いいえ
プロパティリスト NeXT(作成者)
Apple(メンテナ)
部分的 XML形式のパブリックDTD はい はいb いいえ CocoaCoreFoundationOpenStepGnuStep いいえ
プロトコルバッファ(protobuf) グーグル 該当なし いいえ 開発者ガイド:エンコーディング はい 部分的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) イーサリアム 該当なし いいえ 仕様 はい いいえ いいえ いいえ Erlang、Go、Java、Javascript、Kotlin、Objective-C、Python、Swift、PHP はい
S式 ジョン・マッカーシー(オリジナル)
ロン・リベスト(インターネットドラフト)
LispNetstrings 主に事実上の 「S式」 インターネットドラフト はい、正規表現 はい、高度な輸送表現 いいえ いいえ 該当なし
笑顔 タトゥサロランタ JSON いいえ スマイルフォーマット仕様 はい いいえ はい 部分的
JSONスキーマ提案、その他のJSONスキーマ/ IDL)
部分的
(Smileバックエンドで実装されたJSON API、Jackson、Python経由)
該当なし
石鹸 W3C XML はい W3Cの推奨事項
SOAP / 1.1
SOAP / 1.2
部分的
効率的なXML交換バイナリXML高速インフォセットMTOMXSD base64データ
はい 組み込みのID/ref、XPointerXPath WSDLXMLスキーマ DOMSAXXQueryXPath 該当なし
構造化データ交換フォーマット マックスワイルドグルーブ 該当なし はい RFC 3072 はい いいえ いいえ いいえ 該当なし
ApacheThrift Facebook(作成者)
Apache(メンテナ)
該当なし いいえ オリジナルのホワイトペーパー はい 部分的c いいえ ビルトイン C ++、Java、Python、PHP、Ruby、Erlang、Perl、Haskell、C#、Cocoa、JavaScript、Node.js、Smalltalk、OCaml、Delphi、その他の言語[3] 該当なし
UBJSON バズメディア、LLC JSONBSON いいえ ubjson.org はい いいえ いいえ いいえ いいえ 該当なし
eXternal Data Representation(XDR) SunMicrosystems(作成者)
IETF(メンテナ)
該当なし はい STD 67 / RFC 4506 はい いいえ はい はい はい 該当なし
XML W3C SGML はい W3Cの推奨事項
1.0(第5版)
1.1(第2版)
部分的
効率的なXML交換バイナリXML高速インフォセットXSD base64データ
はい XPointerXPath XMLスキーマRELAX NG DOMSAXXQueryXPath 該当なし
XML-RPC デーブ・ワイナー[4] XML いいえ XML-RPC仕様 いいえ はい いいえ いいえ いいえ いいえ
YAML Clark Evans、
IngydötNet、
およびOren Ben-Kiki
CJavaPerlPythonRubyEメールHTMLMIMEURIXMLSAXSOAPJSON [5] いいえ バージョン1.2 いいえ はい はい 部分的
KwalifyRx、組み込み言語type-defs)
いいえ いいえ
名前 クリエーター-メンテナー に基づく 標準化? 仕様 バイナリ 人間が読める形式 参照をサポートしますか?e スキーマ-IDL 標準API ゼロコピー操作 をサポートします
  1. ^現在のデフォルト形式はバイナリです。
  2. ^「クラシック」形式はプレーンテキストであり、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]

人間が読める形式の構文比較

フォーマット ヌル ブールtrue ブールfalse 整数 浮動小数点 配列 連想配列/オブジェクト
ASN.1
(XMLエンコーディングルール)
<foo /> <foo>true</foo> <foo>false</foo> <foo>685230</foo> <foo>6.8523015e+5</foo> <foo>A to Z</foo>
<SeqOfUnrelatedDatatypes> 
    <isMarried> true </ isMarried> 
    <hobby  /> 
    <velocity> -42.1e7 </velocity> 
    <bookname> A to Z </bookname> 
    <bookname>「いいえ」と言いました。</ bookname> 
</ SeqOfUnrelatedDatatypes>
オブジェクト(キーはフィールド名です):
<person> 
    <isMarried> true </ isMarried> 
    <hobby  /> 
    <height> 1.85 </ height> 
    <name> Bob Peterson </ name> 
</ person>

データマッピング(キーはデータ値です):

<競争> 
    <測定> 
        <名前>ジョン</名前> 
        <高さ> 3.14 </高さ> 
    </測定> 
    <測定> 
        <名前>ジェーン</名前> 
        <高さ> 2.718 </高さ> 
    </測定> 
< /競争>

a

CSV b 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
フォーマット ヌル ブールtrue ブールfalse 整数 浮動小数点 配列 連想配列/オブジェクト
イオン

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
'''
[ true  null  -42.1e7  "A to Z" ]
{ '42'  true  ' 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
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 [検証が必要] nulla truea falsea 685230a 6.8523015e+5a "A to Z"
'A to Z'
NoSpaces
true
ヌル
-42.1e7
「AからZ」

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

42
  true
「AからZ」
  1
  2
  3
42
  true
「AからZ」、(1、2、3)
フォーマット ヌル ブールtrue ブールfalse 整数 浮動小数点 配列 連想配列/オブジェクト
OpenDDL 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からZ"}
}
dict
{{
    value(key = "42"){bool {true}}
    値(key = "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
ピクルス(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.
プロパティリスト
(プレーンテキスト形式)[8]
該当なし <*BY> <*BN> <*I685230> <*R6.8523015e+5> "A to Z" ( <*BY>, <*R-42.1e7>, "A to Z" )
{{
    "42" = <* BY>;
    "AからZ"=(<* I1>、<* I2>、<* I3>);
}
プロパティリスト
(XML形式)[9]
該当なし <true /> <false /> <integer>685230</integer> <real>6.8523015e+5</real> <string>A to Z</string>
<array> 
    <true  /> 
    <real> -42.1e7 </ real> 
    <string> AからZ </string> 
</ array>
<dict> 
    <key> 42 </ key> 
    <true  /> 
    <key> AからZ </key> 
    <array> 
        <integer> 1 </ integer> 
        <integer> 2 </ integer> 
        <integer> 3 </整数> 
    </array> 
</ dict>
プロトコルバッファ 該当なし true false 685230
-685230
20.0855369 "A to Z"
"sdfff2 \000\001\002\377\376\375"
"q\tqq<>q2&\001\377"
field1: "value1"
field1: "value2"
field1: "value3
別のフィールド{
  foo:123
  バー:456
}
別のフィールド{
  foo:222
  バー:333
}
things1  "blahblah" 
things2  18923743 
things3  -44 things4 { submessage_field1 "foo" submessage_field2 false } enumeratedThing SomeEnumeratedValue things5 123.456 [ extensionFieldFoo ] " etc" [ extensionFieldThatIsAnEnum ] EnumValue
 
   
   

 
 
 
 
フォーマット ヌル ブールtrue ブールfalse 整数 浮動小数点 配列 連想配列/オブジェクト
S式 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
<item> true </ item> 
<item  xsi:nil = "true" /> 
<item> -42.1e7 </ item> 
<item> AからZ <item>
<map> 
  <entry  key = "42" > true </ entry> 
  <entry  key = "A to Z" > 
    <item  val = "1" /> 
    <item  val = "2" /> 
    <item  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>
<value> <array> 
  <data> 
  <value> <boolean> 1 </ boolean> </ value> 
  <value> <double> -42.1e7 </ double> </ value> 
  <value><string> AからZ </ string> </ value> 
  </ data> 
  </ array> </ value>
<value> <struct> 
  <member> 
    <name> 42 </ name> 
    <value> <boolean> 1 </ boolean> </ value> 
    </ member> 
  <member> 
    <name> 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>
  1. ^省略されたXML要素は、通常、XMLデータバインディングツールによってNULLとしてデコードされます。ここに示されているのは、別の可能なエンコーディングです。XMLスキーマは、このデータ型のエンコーディングを定義していません。
  2. ^ RFC CSV仕様は、区切り文字、改行、および引用文字のみを扱います。プログラミングデータ構造のシリアル化は直接処理しません
  3. ^ netstrings仕様は、ネストされたバイト文字列扱い; それ以外のものは仕様の範囲外です。
  4. ^ PHPは浮動小数点数を正しくシリアル化解除しますが、完全な10進数展開にシリアル化します。たとえば、3.14は次のようにシリアル化されます3.140 000 000 000 000 124 344 978 758 017 532 527 446 746 826171875_ _
  5. ^ XMLデータバインディングSOAPシリアル化ツールは、プログラミングデータ構造します。示されているのは、XML要素および属性に配置できるXML値です。
  6. ^この構文はインターネットドラフトと互換​​性がありませんが、Lispます。

バイナリ形式の比較

フォーマット ヌル ブール値 整数 浮動小数点 配列 連想配列/オブジェクト
ASN.1
BERPER、またはOERエンコーディング)
NULLタイプ ブール値:
  • BER:バイナリ形式の1バイトとして。
  • PER:1ビットとして;
  • OER:1バイトとして
整数:
  • BER:可変長ビッグエンディアンバイナリ表現(最大2 2 1024ビット)。
  • PER Unaligned:整数型の範囲が有限の場合は固定ビット数。それ以外の場合は可変ビット数。
  • PER Aligned:整数型の範囲が有限で、範囲のサイズが65536未満の場合、固定ビット数。それ以外の場合は可変数のオクテット。
  • OER:整数型がそのオクテット数に適合する有限範囲を持っている場合、1、2、または4オ​​クテット(符号付きまたは符号なし)。それ以外の場合は可変数のオクテット
本物:
  • 10進数の実際の値は、ISO6093形式の文字列として表されます。
  • バイナリの実数値は、仮数、基数(2、8、または16)、および指数を含む2進形式で表されます。
  • 特別な値NaN、-INF、+ INF、および負のゼロもサポートされています
複数の有効なタイプ(VisibleString、PrintableString、GeneralString、UniversalString、UTF8String) データ仕様SETOF(順不同)およびSEQUENCE 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バイト)
True:\x08\x01
False:\x08\x00
(2バイト)
int32:32ビットのリトルエンディアン 2の補数またはint64:64ビットのリトルエンディアン 2の補数 ダブルリトルエンディアン binary64 UTF-8でエンコードされ、前にint32でエンコードされた文字列の長さ(バイト単位) 数字キー付きの 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インターチェンジ(EXI)[a]

(保存されていない字句値の形式)

xsi:nilはバイナリコンテキストでは許可されていません ブール値として解釈される1〜2ビットの整数。 ブール符号と任意の長さの7ビットオクテット。リトルエンディアンで最上位ビットが0になるまで解析されます。スキーマは、ゼロ点を任意の数に設定できます。

Unsignedは、ブールフラグをスキップします。

  • 浮動小数点:整数の仮数と整数の指数。
  • 10進数:ブール符号、整数の整数値、整数の小数。
長さの接頭辞が整数でエンコードされたUnicode。代わりに、整数は列挙または文字列テーブルエントリを表す場合があります。 接頭辞付きのアイテムのセットの長さ。 プロトコルではありません。
FlatBuffers 親オブジェクトにフィールドがないものとしてエンコードされています
  • 正しい:\x01
  • 誤り:\x00

(1バイト)

リトルエンディアン 2の補数符号付きおよび符号なし8/16/32/64ビット UTF-8でエンコードされ、前に32ビット整数の長さの文字列(バイト単位) 要素数の32ビット整数長が前に付いた他のタイプのベクトル テーブル(スキーマ定義タイプ)またはキーでソートされたベクトル(マップ/ディクショナリ)
イオン[14] \x0f[b]
  • 正しい:\x11
  • 誤り:\x10
  • ポジティブ\x2x、ネガティブ\x3x
  • ゼロは常にタグバイトにエンコードされます
  • 13バイト(104ビット)を超えるBigIntには、長さが1バイト以上のオーバーヘッドがあります
  • \x44(32ビット浮動小数点)
  • \x48(64ビット浮動小数点)
  • ゼロは常にタグバイトにエンコードされます
  • UTF-8\x8x
  • その他の文字列:\x9x
  • 任意の長さとオーバーヘッド
\xbx任意の長さとオーバーヘッド。オクテット単位の長さ。
  • 構造体(番号付きフィールド):\xdx
  • 注釈(名前付きフィールド):\xex
MessagePack \xc0
  • 正しい:\xc3
  • 誤り:\xc2
  • 1バイトの「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文字列としてエンコードされた長さ+':'+データ+'、'

長さは、「:」と「、」の間のオクテットのみをカウントします

プロトコルではありません。 プロトコルではありません。 プロトコルではありません。
OGDLバイナリ
プロパティリスト
(バイナリ形式)
プロトコルバッファ
UTF-8でエンコードされ、前にvarintでエンコードされた整数の長さの文字列(バイト単位) 同じタグで繰り返される値、またはvarintでエンコードされた整数の場合のみ、連続してパックされ、タグと合計バイト長がプレフィックスとして付けられた値 該当なし
イーサリアム 再帰長プレフィックス プロトコルではありません。
\x80(長さゼロの文字列)よく使用されます
プロトコルではありません。
整数0/1がよく使用されます。
  • 0〜127:\x00\x7f
  • その他の値: -で始まる任意の長さのビッグエンディアンでエンコードされたバイトの文字列\x80\xbf
整数エンコーディングは、IEEE浮動小数点として解釈される場合があります。
  • 接頭辞付きの長さ、最大55バイト:\x80\xb7その後にデータが続きます。
  • 56バイト以上:\xb8\xbf1〜8バイトの整数長の文字列とそれに続くデータ。
  • 接頭辞付きの長さ、最大55バイト:\xc0\xf7その後にデータが続きます。
  • 56バイト以上:\xf8\xff1〜8バイトの整数長のデータとそれに続くデータ。
  • 長さは、リストアイテムではなく、常にバイト単位です。
プロトコルではありません。キー/値ペアリストまたは他の形式のリストとしてエンコードされる場合があります。
笑顔 \x21
  • 正しい:\x23
  • 誤り:\x22
  • 1バイトの「小さい」(値-16 – 15は\xc0\xdfとしてエンコードされます)、
  • ジグザグにエンコードされたvarints(1〜11データバイト)、またはBigInteger
IEEEシングル/ダブル、BigDecimal 長さの接頭辞が付いた「短い」文字列(最大64バイト)、マーカーで終わった「長い」文字列、および(オプションの)後方参照 エンドマーカーを使用した任意の長さの異種配列 エンドマーカーを使用した任意の長さのキー/値のペア
構造化データ交換フォーマット(SDXF) ビッグエンディアンの符号付き24ビットまたは32ビット整数 ビッグエンディアンIEEEダブル UTF-8またはISO8859-1 のいずれかでエンコード IDとサイズが同じで、前にint16の長さの配列ヘッダーが付いた要素のリスト チャンクには、任意の深さまで他のチャンクを含めることができます
倹約
  1. ^ 任意のXMLベースの表現は、 EXI-Efficient XML Interchangeを使用して圧縮または生成できます。これは、XMLの「スキーマ情報」(スキーマが必要な、またはスキーマがない)バイナリ圧縮標準です。
  2. ^ すべての基本的なイオンタイプには、0xXfタグとしてnullバリアントがあります。0x0f以外の0x0Xで始まるタグは、無視されるパディングを定義します。
  3. ^ Netstringsの解釈は、完全にアプリケーションまたはスキーマに依存します

も参照してください

参照

  1. ^ 「HAPIFHIR-Java用のオープンソースFHIRAPI」hapifhir.io
  2. ^ cpython / Lib / pickle.py
  3. ^ ApacheThrift
  4. ^ 「SOAPの簡単な歴史」www.xml.com
  5. ^ ベンキキ、オレン; エヴァンス、クラーク; ネット、Ingydöt(2009-10-01)。「YAMLはマークアップ言語(YAML)バージョン1.2ではありません」公式YAMLWebサイト2012年2月10日取得
  6. ^ "text_format.h-プロトコルバッファ"GoogleDevelopers
  7. ^ 「AvroJsonフォーマット」
  8. ^ 「NSPropertyListSerializationクラスのドキュメント」www.gnustep.org2011年5月19日にオリジナルからアーカイブされました2009年10月28日取得
  9. ^ 「ドキュメントアーカイブ」developer.apple.com
  10. ^ Oren Ben-Kiki; クラークエバンス; ブライアンインガーソン(2005-01-18)。「YAMLバージョン1.1のNull言語に依存しないタイプ」YAML.org 2009年9月12日取得
  11. ^ a b Oren Ben-Kiki; クラークエバンス; ブライアンインガーソン(2005-01-18)。「YAMLバージョン1.1のブール言語に依存しないタイプ」YAML.orgクラークC.エバンス2009年9月12日取得
  12. ^ Oren Ben-Kiki; クラークエバンス; ブライアンインガーソン(2005-02-11)。「YAMLバージョン1.1の整数言語に依存しないタイプ」YAML.orgクラークC.エバンス2009年9月12日取得
  13. ^ Oren Ben-Kiki; クラークエバンス; ブライアンインガーソン(2005-01-18)。「YAMLバージョン1.1の浮動小数点言語に依存しないタイプ」YAML.orgクラークC.エバンス2009年9月12日取得
  14. ^ イオンバイナリエンコーディング
  15. ^ 「MessagePackは非常に効率的なオブジェクトシリアル化ライブラリです。JSONに似ていますが、非常に高速で小さいです。:msgpack/msgpack」2019年4月2日–GitHub経由。

外部リンク