【发布时间】:2010-01-21 07:59:59
【问题描述】:
我的任务是定义两个 Web 应用程序之间的通信。我决定为此使用 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。由于根节点,那里有额外的轮胎等级。
如果轮胎没有根节点,代码可能会更精简。
{"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 调用
没有根节点有什么不好的吗?我喜欢根节点,因为它就像一个类名,但不必要的关卡让我很烦恼,并且会使遍历变得更加复杂。
【问题讨论】:
标签: php javascript json