我的任务是定义两个网络应用程序之间的通信。我决定为此使用 JSON。 JSON 中具有根节点的情况有多常见?
假设我们有一个汽车对象。这是以“Car”为根节点的 JSON:
{"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 中序列化后,第一个轮胎的品牌将是$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
没有根节点有什么不好吗?我喜欢有根节点,因为它的作用就像一个类名,但不必要的级别给我带来了很多麻烦,并使遍历变得更加复杂。