我想知道在JSON对象上选择JSON数组有什么优点(如果有的话)?你有一个例子,很清楚一个选择比另一个更好吗?
我有以下示例:
JSON数组:
[ {"animal" : "deer", "colour" : "brown"}, {"animal" : "sloth", "colour" : "gray"}]
JSON对象:
{"animalList" : [
{"animal" : "deer", "colour" : "brown"},
{"animal" : "sloth", "colour" : "gray"}
]}
但是在选择其中一个方面看不出任何优势。有什么想法吗?
答案 0 :(得分:1)
在这个例子中,没有优势。但是如果你需要明显的分组,例如,如果你经常需要按照他们的班级对动物进行分组,那么写这个就有一个优势:
{
"birds": [
{"animal" : "eagle", "colour" : "brown"},
{"animal" : "pigeon", "colour" : "gray"}
],
"mammals" :[
{"animal" : "lion", "colour" : "yellow"},
{"animal" : "tiger", "colour" : "orange"}
]
}
对此:
{"animal" : "eagle", "colour" : "brown"},
{"animal" : "pigeon", "colour" : "gray"}
{"animal" : "lion", "colour" : "yellow"},
{"animal" : "tiger", "colour" : "orange"}
因为您只需通过animals['birds']
等密钥访问它们就无需过滤它们。
对象提供键对位置快速访问的快速访问。你选择写这样的动物:
{"animal" : "deer", "colour" : "brown"}
但你也可以写:
[
{
"key": "animal",
"value": "eagle"
},
{
"key": "colour",
"value": "brown"
}
]
如果您没有,那是因为您已经了解了使用animal['colour']
访问动物颜色的优势。
答案 1 :(得分:0)
您的意思是在AJAX响应中将数组包装在对象中吗?
在旧版浏览器中,返回阵列可能导致安全漏洞,如detailed in this blog post。我相信主流浏览器不再容易受到攻击,但无法找到源代码。但是,安全性是带括号,所以总是将对象作为AJAX响应返回无论如何。
答案 2 :(得分:0)
数组已定义了无法直接在对象上运行的函数。与sort
,map
等相似