gpt4 book ai didi

php - JSON 中的根节点

转载 作者:可可西里 更新时间:2023-11-01 13:23:39 25 4
gpt4 key购买 nike

我的任务是定义两个网络应用程序之间的通信。我决定为此使用 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 级别。

如果 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 调用

没有根节点有什么坏处吗?我喜欢有根节点,因为它就像一个类名,但不必要的级别让我很烦,并且会使遍历更加复杂。

最佳答案

我会省略两个根节点,TireCar

请记住,JSON 的主要用途是以紧凑格式通过网络传输对象。除此之外没有真正的其他用法。您想要使用 JSON 编码的数据,并且通过添加根节点,您正在创建没有真实身份和用途的空容器对象。省略根节点时,您会得到

$car->tires[0]->make

在 JS 中你会得到

car.tires[0].make

这更清晰并且更好地代表了对象。请记住,这是您必须处理的内容。当然,您可以使用某种 JSON 映射器来映射对象应如何序列化并生成上述对象,但这是很多额外的工作,恕我直言,不值得这样做。

如果你想在 JSON 中包含类名,只需将其设为属性即可,例如

{ 'klass': 'Car', 'make': 'Mustang', 'year':1999 }

关于php - JSON 中的根节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2107691/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com