Jump to content

Сравнение форматов сериализации данных

Это сравнение сериализации данных форматов , различных способов преобразования сложных объектов в последовательности битов . Он не включает языки разметки, используемые исключительно в качестве форматов файлов документов .

Имя Создатель-сопровождающий На основе Стандартизированный? [ необходимо определение ] Спецификация Двоичный ? Человекочитаемый ? Поддерживает ссылки ? и Схема- IDL ? Стандартные API Поддерживает нулевого копирования операции
Апач Авро Фонд программного обеспечения Apache Нет Спецификация Apache Avro™ Да Частичный г Встроенный C, C#, C++, Java, PHP, Python, Ruby
Апач Паркет Фонд программного обеспечения Apache Нет Апач Паркет Да Нет Нет Ява, Питон, С++ Нет
Апач бережливый Фейсбук (создатель)
Апач (сопровождающий)
Нет Оригинальный технический документ Да Частичный с Нет Встроенный C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, JavaScript, Node.js, Smalltalk, OCaml, Delphi и другие языки. [1]
АСН.1 ИСО , МЭК , МСЭ-Т Да Серии ISO/IEC 8824/ITU-T X.680 (синтаксис) и ISO/IEC 8825/ITU-T X.690 (правила кодирования). X.680, X.681 и X.683 определяют синтаксис и семантику. BER , DER , PER , OER или по индивидуальному заказу через ECN XER , JER , GSER или по индивидуальному заказу через ECN Да ж Встроенный О
Бенкоде Брэм Коэн (создатель)
BitTorrent, Inc. (сопровождающий)
Фактически БЭП , Часть спецификации протокола BitTorrent. За исключением чисел и разделителей, это ASCII. Нет Нет Нет Нет Нет
БСОН МонгоБД JSON Нет Спецификация БСОН Да Нет Нет Нет Нет Нет
Капитан Прото Кентон Варда Нет Спецификация кодирования Cap'n Proto Да Частичный час Нет Да Нет Да
КБОР Карстен Борман, П. Хоффман Пакет сообщений [2] Да RFC 8949 Да Нет Да,
через тегирование
CDDL ФИДО2 Нет
Значения, разделенные запятыми (CSV) Автор RFC:
Yakov Shafranovich
Множество неформальных вариантов RFC 4180
(среди прочих)
Нет Да Нет Нет Нет Нет
Общее представление данных (CDR) Группа управления объектами Да Общий протокол Inter-ORB Да Нет Да Да Ада, C, C++, Java, Кобол, Лисп, Python, Ruby, Smalltalk
D-Bus Протокол сообщений freedesktop.org Да Спецификация D-шины Да Нет Нет Частичный
(строки подписи)
Да
Эффективный обмен XML (EXI) W3C XML , эффективный XML Да Формат эффективного обмена XML (EXI) 1.0 Да XML XPointer , XPath XML-схема DOM , SAX , StAX , XQuery , XPath
Расширяемая нотация данных (edn) Рич Хики / сообщество Clojure Кложур Да Официальная спецификация edn Нет Да Нет Нет Clojure, Ruby, Go, C++, Javascript, Java, CLR, ObjC, Python [3] Нет
Плоские буферы Google Нет Плоские буферы GitHub Да Апач Стрела Частичный
(внутри буфера)
Да C++, Java, C#, Go, Python, Rust, JavaScript, PHP, C, Dart, Lua, TypeScript Да
Быстрый информационный набор ИСО , МЭК , МСЭ-Т XML Да МСЭ-Т X.891 и ISO/IEC 24824-1:2007. Да Нет XPointer , XPath XML-схема DOM , SAX , XQuery , XPath
МУЖЧИНА Уровень здоровья 7 REST Основы Да Ресурсы по быстрой совместимости в здравоохранении Да Да Да Да Хапи для FIR [4] JSON , XML , Черепаха Нет
Ион Амазонка JSON Нет Спецификация Amazon Ion Да Да Нет Ионная схема C, C#, Go, Java, JavaScript, Python, Rust
Java Сериализация Корпорация Oracle Да Сериализация объектов Java Да Нет Да Нет Да
JSON Дуглас Крокфорд Синтаксис JavaScript Да СТД 90 /RFC 8259
(вспомогательное:
РФК 6901,
RFC 6902), ECMA-404 , ISO/IEC 21778:2017.
Нет, но см. BSON , Smile , UBJSON Да JSON Pointer (RFC   6901) или, альтернативно, JSONPath , JPath , JSPON , json:select() ; и JSON-LD Частичный
( Предложение схемы JSON , ASN.1 с JER , Kwalify. Архивировано 12 августа 2021 г. в Wayback Machine , Rx , JSON-LD.
Частичный
( Кларнет , JSONQuery / RQL , JSONPath ), JSON-LD
Нет
Пакет сообщений Садаюки Фурухаси JSON (примерно) Нет Спецификация формата MessagePack Да Нет Нет Нет Нет Да
Чистые строки Дэн Бернштейн Нет netstrings.txt Кроме разделителей ASCII Да Нет Нет Нет Да
ОГДЛ Рольф Вин ? Нет Спецификация Двоичная спецификация Да Спецификация пути Расписание ВД
OPC-UA Бинарный Фонд ОПК Нет opcfoundation.org Да Нет Да Нет Нет
ОпенДДЛ Эрик поляк С , PHP Нет OpenDDL.org Нет Да Да Нет библиотека OpenDDL
Формат сериализации PHP PHP-группа Да Нет Да Да Да Нет Да
Пикль (Питон) Гвидо ван Россум Питон На самом деле ПДЛ , PEP 3154 – Протокол Pickle версии 4 Да Нет Да [5] Нет Да Нет
Список недвижимости NeXT (создатель)
Apple (сопровождающий)
? Частичный Общедоступное DTD для формата XML Да а Да б Нет ? Какао , CoreFoundation , OpenStep , GnuStep Нет
Буферы протоколов (protobuf) Google Нет Руководство разработчика: Кодировка , спецификация proto2 и спецификация proto3 Да Да д Нет Встроенный C++, Java, C#, Python, Go, Ruby, Objective-C, C, Dart, Perl, PHP, R, Rust, Scala, Swift, Julia, Erlang, D, Haskell, ActionScript, Delphi, Elixir, Elm, Erlang, GopherJS, Haskell, Haxe, JavaScript, Kotlin, Lua, Matlab, Mercurt, OCaml, Prolog, Solidity, Typescript, Vala, Visual Basic Нет
S-выражения Джон Маккарти (оригинал)
Рон Ривест (интернет-проект)
Лисп , сетевые строки Во многом де-факто "S-Expressions". Архивировано 7 октября 2013 г. на Wayback Machine. интернет-проекте Да, каноническое представление Да, расширенное транспортное представительство Нет Нет
Улыбка Тату Салоранта JSON Нет Спецификация формата улыбки Да Нет Да Частичный
( Предложение схемы JSON , другие схемы/IDL JSON)
Частичный
(через API-интерфейсы JSON, реализованные с помощью бэкэнда Smile, на Джексоне, Python)
МЫЛО W3C XML Да Рекомендации W3C :
МЫЛО/1.1
МЫЛО/1.2
Частичный
( Эффективный обмен XML , двоичный XML , быстрый информационный набор , MTOM , данные XSD base64 )
Да Встроенный идентификатор/ссылка, XPointer , XPath WSDL , схема XML DOM , SAX , XQuery , XPath
Форматы обмена структурированными данными Макс Вильдгрубе Да RFC 3072 Да Нет Нет Нет
УБЖСОН Базз Медиа, ООО JSON , БСОН Нет ubjson.org Да Нет Нет Нет Нет
Внешнее представление данных (XDR) Sun Microsystems (создатель)
IETF (сопровождающий)
Да СТД 67 /RFC 4506 Да Нет Да Да Да
XML W3C СГМЛ Да Рекомендации W3C :
1.0 (пятое издание)
1.1 (второе издание)
Частичный
( Эффективный обмен XML , двоичный XML , быстрый информационный набор , данные XSD base64 )
Да XPointer , XPath XML-схема , РАССЛАБЬТЕСЬ DOM , SAX , XQuery , XPath
XML-RPC Дэйв Винер [6] XML Нет Спецификация XML-RPC Нет Да Нет Нет Нет Нет
ЯМЛ Кларк Эванс,
Инги дот Нет,
и Орен Бен-Кики
C , Java , Perl , Python , Ruby , электронная почта , HTML , MIME , URI , XML , SAX , SOAP , JSON [7] Нет Версия 1.2 Нет Да Да Частичный
( Kwalify. Архивировано 12 августа 2021 г. на Wayback Machine , Rx , встроенные определения типов языка)
Нет Нет
Имя Создатель-сопровождающий На основе Стандартизированный? Спецификация Двоичный ? Человекочитаемый ? Поддерживает ссылки ? и Схема- IDL ? Стандартные API Поддерживает нулевого копирования операции
  1. ^ Текущий формат по умолчанию — двоичный.
  2. ^ «Классический» формат — это обычный текст, также поддерживается формат XML.
  3. ^ Теоретически возможно из-за абстракции, но реализация не включена.
  4. ^ Основной формат — двоичный, но доступны текстовые форматы и форматы JSON. [8] [9]
  5. ^ Означает, что универсальные инструменты/библиотеки знают, как кодировать, декодировать и разыменовывать ссылку на другую часть данных в том же документе. Инструменту может потребоваться файл IDL , но не более того. Исключает пользовательские, нестандартизированные методы ссылок.
  6. ^ ASN.1 имеет X.681 (система информационных объектов), X.682 (ограничения) и X.683 (параметризация), которые позволяют точно определять открытые типы, где типы значений могут быть идентифицированы целыми числами и OID. и т. д. OID — это стандартный формат глобальных уникальных идентификаторов, а также стандартная нотация («абсолютная ссылка») для ссылки на компонент значения. Например, PKIX использует такую ​​нотацию в RFC 5912. С помощью такой нотации (ограничения на параметризованные типы с использованием наборов информационных объектов) общие инструменты/библиотеки ASN.1 могут автоматически кодировать/декодировать/разрешать ссылки внутри документа.
  7. ^ Основной формат — двоичный, доступен кодировщик json. [10]
  8. ^ Основной формат — двоичный, но доступен текстовый формат.

Сравнение синтаксиса удобочитаемых форматов

[ редактировать ]
Формат Нулевой Логическое значение true Логическое значение ложь Целое число Плавающая точка Нить Множество Ассоциативный массив / Объект
АСН.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>We said, "no".</bookname>
</SeqOfUnrelatedDatatypes>
Объект (ключ — имя поля):
<person>
    <isMarried>true</isMarried>
    <hobby />
    <height>1.85</height>
    <name>Bob Peterson</name>
</person>

Сопоставление данных (ключ — значение данных):

<competition>
    <measurement>
        <name>John</name>
        <height>3.14</height>
    </measurement>
    <measurement>
        <name>Jane</name>
        <height>2.718</height>
    </measurement>
</competition>

а

CSV-файл б nullа
(или пустой элемент в строке) а
1а
trueа
0а
falseа
685230
-685230а
6.8523015e+5а A to Z
"We said, ""no""."
true,,-42.1e7,"A to Z"
42,1
A to Z,1,2,3
Эдн nil true false 685230
-685230
6.8523015e+5 "A to Z", "A \"up to\" Z" [true nil -42.1e7 "A to Z"] {:kw 1, "42" true, "A to Z" [1 2 3]}
Формат Нулевой Логическое значение true Логическое значение ложь Целое число Плавающая точка Нить Множество Ассоциативный массив / Объект
Ион

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]}
Чистые строки с 0:,а
4:null,а
1:1,а
4:true,а
1:0,а
5:false,а
6:685230,а 9:6.8523e+5,а 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,,,,а
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]}
ОГДЛ [ нужна проверка ] nullа trueа falseа 685230а 6.8523015e+5а "A to Z"
'A to Z'
NoSpaces
true
null
-42.1e7
"A to Z"

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

42
  true
"A to Z"
  1
  2
  3
42
  true
"A to Z", (1, 2, 3)
Формат Нулевой Логическое значение true Логическое значение ложь Целое число Плавающая точка Нить Множество Ассоциативный массив / Объект
ОпенДДЛ 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}

Гетерогенный массив:

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}}
}
Формат сериализации PHP N; b:1; b:0; i:685230;
i:-685230;
d:685230.15;д
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;}д
Пикль (Питон) 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.
Список недвижимости
(обычный текстовый формат) [11]
<*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) [12]
<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>
Буферы протоколов 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
anotherfield {
  foo: 123
  bar: 456
}
anotherfield {
  foo: 222
  bar: 333
}
thing1: "blahblah"
thing2: 18923743
thing3: -44
thing4 {
  submessage_field1: "foo"
  submessage_field2: false
}
enumeratedThing: SomeEnumeratedValue
thing5: 123.456
[extensionFieldFoo]: "etc"
[extensionFieldThatIsAnEnum]: EnumValue
Формат Нулевой Логическое значение true Логическое значение ложь Целое число Плавающая точка Нить Множество Ассоциативный массив / Объект
S-выражения NIL
nil
T
#tж
true
NIL
#fж
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)))
ЯМЛ ~
null
Null
NULL[13]
y
Y
yes
Yes
YES
on
On
ON
true
True
TRUE[14]
n
N
no
No
NO
off
Off
OFF
false
False
FALSE[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 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]
XML и и мыло <null />а true false 685230 6.8523015e+5 A to Z
<item>true</item>
<item xsi:nil="true"/>
<item>-42.1e7</item>
<item>A to 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 to Z</string></value>
  </data>
  </array></value>
<value><struct>
  <member>
    <name>42</name>
    <value><boolean>1</boolean></value>
    </member>
  <member>
    <name>A to 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 правильно десериализует любые числа с плавающей запятой, но сериализует их до полного десятичного расширения. Например, 3.14 будет сериализован до 3.140 000 000 000 000 124 344 978 758 017 532 527 446 746 826 171 875 .
  5. ^ Привязки данных XML и инструменты сериализации SOAP обеспечивают типобезопасную XML-сериализацию структур данных программирования в XML. Показаны значения XML, которые можно поместить в элементы и атрибуты XML.
  6. ^ Этот синтаксис несовместим с Internet-Draft, но используется некоторыми диалектами Lisp .

Сравнение двоичных форматов

[ редактировать ]
Формат Нулевой логические значения Целое число Плавающая точка Нить Множество Ассоциативный массив / объект
АСН.1
( BER , PER или OER кодировка )
НУЛЕВОЙ тип БУЛЕВОЕ :
  • BER: как 1 байт в двоичной форме;
  • PER: как 1 бит;
  • О: как 1 байт
ЦЕЛОЕ ЧИСЛО :
  • BER: двоичное представление переменной длины с прямым порядком байтов (до 2 2 1024 биты);
  • PER Unaligned: фиксированное количество бит, если целочисленный тип имеет конечный диапазон; в противном случае переменное количество битов;
  • PER Aligned: фиксированное количество бит, если целочисленный тип имеет конечный диапазон и размер диапазона меньше 65536; в противном случае переменное число октетов;
  • OER: 1, 2 или 4 октета (со знаком или без знака), если целочисленный тип имеет конечный диапазон, вписывающийся в это число октетов; переменное число октетов в противном случае
НАСТОЯЩИЙ :
  • Реальные значения по основанию 10 представлены в виде строк символов в формате ISO 6093;
  • двоичные действительные значения представлены в двоичном формате, который включает мантиссу, основание (2, 8 или 16) и показатель степени;
  • особые ценности NaN, -INF, +INF и отрицательный ноль. Также поддерживаются
Несколько допустимых типов ( VisibleString, PrintableString, GeneralString, UniversalString, UTF8String ) Характеристики данных НАБОР (неупорядоченный) и ПОСЛЕДОВАТЕЛЬНОСТЬ (гарантированный заказ) Тип, определяемый пользователем
БСОН \x0A
(1 байт)
Истинный: \x08\x01
ЛОЖЬ: \x08\x00
(2 байта)
int32: 32-битное с прямым порядком дополнение до 2 байтов или int64: 64-битное с прямым порядком байтов дополнение до 2 Двойной : байтовый файл с прямым порядком байтов64. В кодировке 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 закодирован как (-x - 1)
  • 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) [а]

(Формат несохраняемых лексических значений)

xsi:nil не допускается в двоичном контексте. 1–2-битное целое число, интерпретируемое как логическое значение. Логический знак плюс 7-битные октеты произвольной длины, анализируются до тех пор, пока старший бит не станет равным 0, с прямым порядком байтов. Схема может установить нулевую точку на любое произвольное число.

Unsigned пропускает логический флаг.

  • Плавающее: целочисленная мантисса и целочисленный показатель степени.
  • Десятичное число: логический знак, целое целое значение, дробное целое число.
Целочисленная кодировка Unicode с префиксом длины. Вместо этого целые числа могут представлять перечисления или записи таблицы строк. Набор элементов с префиксом длины. Не в протоколе.
Плоские буферы Закодировано как отсутствие поля в родительском объекте.
  • Истинный: \x01
  • ЛОЖЬ: \x00

(1 байт)

Дополнение Little-endian 2 со знаком и без знака 8/16/32/64 бита В кодировке UTF-8 , перед которой указывается 32-битная целочисленная длина строки в байтах. Векторы любого другого типа, которым предшествует 32-битное целое число элементов. Таблицы (типы, определенные схемой) или векторы, отсортированные по ключу (карты/словари)
Ион [18] \x0f[б]
  • Истинный: \x11
  • ЛОЖЬ: \x10
  • Позитивный \x2x, отрицательный \x3x
  • Ноль всегда кодируется в байте тега.
  • BigInts размером более 13 байт (104 бита) имеют служебные данные длиной более 1 байта.
  • \x44 (32-битное число с плавающей запятой)
  • \x48 (64-битное число с плавающей запятой)
  • Ноль всегда кодируется в байте тега.
  • UTF-8 : \x8x
  • Другие строки: \x9x
  • Произвольная длина и накладные расходы
\xbx Произвольная длина и накладные расходы. Длина в октетах.
  • Структуры (нумерованные поля): \xdx
  • Аннотации (именованные поля): \xex
Пакет сообщений \xc0
  • Истинный: \xc3
  • ЛОЖЬ: \xc2
  • Однобайтовый «fixnum» (значения −32 – 127 )
  • или код типа (1 байт) + обратный порядок байтов (u)int8/16/32/64
Типовой код (1 байт) + одинарный/двойной IEEE
  • Типкод + до 15 байт
  • или код типа + длина как uint8/16/32 + байты;

кодировка не указана [19]

  • Как "fixarray" (однобайтовый префикс + до 15 элементов массива)
  • или код типа (1 байт) + длина 2–4 байта + элементы массива
  • Как «fixmap» (однобайтовый префикс + до 15 пар ключ-значение)
  • или код типа (1 байт) + длина 2–4 байта + пары ключ-значение
Чистые строки [с] Не в протоколе. Не в протоколе. Не в протоколе. Не в протоколе. Длина закодирована как строка ASCII + ':' + данные + ','

Длина учитывает только октеты между ':' и ','

Не в протоколе. Не в протоколе.
OGDL двоичный файл
Список недвижимости
(двоичный формат)
Буферы протоколов
В кодировке UTF-8 , перед которой указывается целочисленная длина строки в байтах в кодировке varint. Повторяющееся значение с одним и тем же тегом или, только для целых чисел с кодировкой varint, значения, упакованные последовательно и имеющие префикс тега и общей длины в байтах.
Улыбка \x21
  • Истинный: \x23
  • ЛОЖЬ: \x22
  • Однобайтовый «маленький» (значения −16–15 закодированы как \xc0\xdf),
  • зигзагообразное кодирование varintс (1–11 байт данных) или BigInteger
IEEE одинарный/двойной, BigDecimal «Короткие» строки с префиксом длины (до 64 байтов), «длинные» строки с маркером в конце и (необязательные) обратные ссылки. Гетерогенные массивы произвольной длины с конечным маркером Пары ключ/значение произвольной длины с конечным маркером
Форматы обмена структурированными данными (SDXF) 24-битное или 32-битное целое число со знаком с обратным порядком байтов Двойной IEEE с прямым порядком байтов Кодировка UTF-8 или ISO 8859-1. Список элементов с одинаковым идентификатором и размером, которому предшествует заголовок массива длиной int16. Чанки могут содержать другие чанки произвольной глубины.
Бережливость
  1. ^ Любое представление на основе XML можно сжать или сгенерировать с помощью EXI – «Формат эффективного обмена XML (EXI) 1.0 (второе издание)» . [17] - который представляет собой стандарт двоичного сжатия XML с «информацией о схеме» (в отличие от стандарта двоичного сжатия, требующего схемы или не требующего схемы).
  2. ^ Все базовые типы Ion имеют нулевой вариант, как и его тег 0xXf. Любой тег, начинающийся с 0x0X, отличный от 0x0f, определяет игнорируемое заполнение.
  3. ^ Интерпретация сетевых строк полностью зависит от приложения или схемы.

См. также

[ редактировать ]
  1. ^ Апач Бережливость
  2. ^ Борман, Карстен (26 декабря 2018 г.). «Отношения CBOR с msgpack» . Гитхаб . Проверено 14 августа 2023 г.
  3. ^ «Реализации» . Гитхаб .
  4. ^ «HAPI FHIR — API FHIR с открытым исходным кодом для Java» . hapifhir.io .
  5. ^ cpython/Lib/pickle.py
  6. ^ «Краткая история SOAP» . www.xml.com .
  7. ^ Бен-Кики, Орен; Эванс, Кларк; Нет, Инги Дёт (01 октября 2009 г.). «YAML не является языком разметки (YAML) версии 1.2» . Официальный веб-сайт YAML . Проверено 10 февраля 2012 г.
  8. ^ «text_format.h — Буферы протокола» . Разработчики Google .
  9. ^ «Сопоставление JSON — буферы протокола» . Разработчики Google .
  10. ^ «Формат Avro Json» .
  11. ^ «Документация класса NSPropertyListSerialization» . www.gnustep.org . Архивировано из оригинала 19 мая 2011 г. Проверено 28 октября 2009 г.
  12. ^ «Архив документации» . разработчик.apple.com .
  13. ^ Орен Бен-Кики; Кларк Эванс; Брайан Ингерсон (18 января 2005 г.). «Нулевой тип, независимый от языка, для YAML версии 1.1» . ЯМЛ.орг . Проверено 12 сентября 2009 г.
  14. ^ Перейти обратно: а б Орен Бен-Кики; Кларк Эванс; Брайан Ингерсон (18 января 2005 г.). «Логический тип, независимый от языка, для YAML версии 1.1» . ЯМЛ.орг . Кларк С. Эванс . Проверено 12 сентября 2009 г.
  15. ^ Орен Бен-Кики; Кларк Эванс; Брайан Ингерсон (11 февраля 2005 г.). «Целый тип, независимый от языка, для YAML версии 1.1» . ЯМЛ.орг . Кларк С. Эванс . Проверено 12 сентября 2009 г.
  16. ^ Орен Бен-Кики; Кларк Эванс; Брайан Ингерсон (18 января 2005 г.). «Тип с плавающей запятой, независимый от языка, для YAML версии 1.1» . ЯМЛ.орг . Кларк С. Эванс . Проверено 12 сентября 2009 г.
  17. ^ «Эффективный расширяемый обмен» .
  18. ^ Ионное двоичное кодирование
  19. ^ «MessagePack — чрезвычайно эффективная библиотека сериализации объектов. Она похожа на JSON, но очень быстрая и маленькая: msgpack/msgpack» . 2 апреля 2019 г. – через GitHub.
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: a441803af4214ad1075411b44d6824ef__1721465160
URL1:https://arc.ask3.ru/arc/aa/a4/ef/a441803af4214ad1075411b44d6824ef.html
Заголовок, (Title) документа по адресу, URL1:
Comparison of data-serialization formats - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)