Поток содержимого объектов («Datums») может быть сгруппирован в массив:
«"d":[ { ... }, { ... }, { ... }, ... ]»
Каждый объект («Datum») должен содержать ряд обязательных полей,
таких, как «ot», «src» и «dst»,
соответственно поток можно представить следующим образом:
«"d":[ { ot, src, dst, ... }, { ot, src, dst, ... }, ... , { ot, src, dst, ... } ]»
Массив объектов («Datums») или отдельный объект («Datum»)
может быть вложен в общий, вышестоящий объект («Object»):
«"o":{ "d":[ { ot, src, dst, ... }, ... , { ot, src, dst } ] }»
Если значения этих полей одинаковы для всех объектов («Datums»),
то такое поле можно «вынести» на уровень выше, в общий, объединяющей
объект («Object»):
«"o":{ ot, src, dst, "d":[ { ... }, { ... }, ... , { ... } ] }»
Такие поля могут отсутствовать в любом из объектов («Datums»),
в таких случаях они будут унаследованы от общего, группирующего
объекта («Object»).
А соответствующие поля будут находится в разделе optional header,
см. описание транспортного уровня протокола. Если же такие поля находятся как в общем
объекте («Object»), так и в конечном объекте («Datum»),
то обработка их производится по определенным правилам. В частности,
поля «src» и «dst» воспринимаются как строки, и
последовательно «склеиваются».
Например:
«"o":{ src'1, "d":[ { src'2, ... }, ... ] }»
В воссоздаваемом объекте («Datum») поле будет формироваться по принципу:
src := src'1 concat src'2
© 2018–2020 Алексей Воронов, Все права защищены.