为什么要在JSON对象上选择JSON数组,反之亦然

时间:2014-01-31 10:40:33

标签: arrays json object

我想知道在JSON对象上选择JSON数组有什么优点(如果有的话)?你有一个例子,很清楚一个选择比另一个更好吗?

我有以下示例:

JSON数组:

[ {"animal" : "deer", "colour" : "brown"}, {"animal" : "sloth", "colour" : "gray"}]

JSON对象:

 {"animalList" : [
      {"animal" : "deer", "colour" : "brown"}, 
      {"animal" : "sloth", "colour" : "gray"}  
    ]}

但是在选择其中一个方面看不出任何优势。有什么想法吗?

3 个答案:

答案 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)

数组已定义了无法直接在对象上运行的函数。与sortmap等相似