Мне поручено определить связь между двумя веб-приложениями. Я решил использовать JSON для этого. Как часто встречается корневой узел в JSON?
Допустим, у нас есть автомобильный объект. Это JSON с корневым узлом "Car":
{"Car": {
"Make":"Mustang",
"YearBuilt":"1999"}}
Итак, давайте предположим, что у меня есть объект Tire, и поскольку мы стандартизируем наличие корневых узлов, этот также должен иметь его.
{"Tire": {"Make": "Brirdgestone", "Size":"15"}}
Интеграция объекта шины JSON в оригинальный объект Car показывает, насколько громоздким он может быть.
{"Car": { "Make":"Mustang",
"YearBuilt":"1999",
"Tires": "[{"Tire": {"Make": "Brirdgestone", "Size":"15"}},
{"Tire": {"Make": "Brirdgestone", "Size":"15"}},
{"Tire": {"Make": "Bridgestone", "Size":"15"}},
{"Tire": {"Make": "Brirdgestone", "Size":"15"}}
]}}
Таким образом, сериализованная в PHP, модель первого Tire будет $object->Car->Tires[0]->Tire->Make
Там есть дополнительный уровень шины из-за корневого узла.
Если бы у Tire не было корневого узла, код мог бы быть намного тоньше.
{"Car": { "Make":"Mustang",
"YearBuilt":"1999",
"Tires": "[{ {"Make": "Bridgestone", "Size":"15"}},
{"Make": "Brirdgestone", "Size":"15"}},
{"Make": "Brirdgestone", "Size":"15"}},
{"Make": "Brirdgestone", "Size":"15"}}]}}
В PHP меньше путаницы, потому что меньше избыточности: марку первой шины называют $object->Car->Tires[0]->Make
Что плохого в том, что у вас нет корневого узла? Мне нравится иметь корневой узел, потому что он действует как имя класса, но ненужные уровни доставляют мне много хлопот и усложняют обход.