Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 为什么选择JSON数组而不是JSON对象,反之亦然_Arrays_Json_Object - Fatal编程技术网

Arrays 为什么选择JSON数组而不是JSON对象,反之亦然

Arrays 为什么选择JSON数组而不是JSON对象,反之亦然,arrays,json,object,Arrays,Json,Object,我想知道选择JSON数组而不是JSON对象有什么好处(如果有的话)?你有没有一个明显的例子,说明一个选择比另一个好 我举了以下例子: JSON数组: [ {"animal" : "deer", "colour" : "brown"}, {"animal" : "sloth", "colour" : "gray"}] JSON对象: {"animalList" : [ {"animal" : "deer", "colour" : "brown"}, {"animal"

我想知道选择JSON数组而不是JSON对象有什么好处(如果有的话)?你有没有一个明显的例子,说明一个选择比另一个好

我举了以下例子:

JSON数组:

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

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

但是我看不出选择一个比另一个有什么好处。有什么想法吗?

您的意思是在AJAX响应中将数组包装到对象中吗


在旧浏览器中,返回数组可能会导致安全漏洞,如下所示。我相信主流浏览器不再容易受到它的攻击,但是找不到它的来源。然而,安全性是非常重要的,所以无论如何都要以AJAX响应的形式返回一个对象。

在这个示例中,没有优势。但是,如果您需要明显的分组,例如,如果您经常需要按照动物的类别对动物进行分组,那么编写以下内容有一个优势:

{
    "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"}  
因为您只需通过像
动物['birds']
这样的键访问它们,就不需要对它们进行过滤

对象提供通过键的快速访问,而不是通过位置的快速访问。你选择这样写一个动物:

{"animal" : "deer", "colour" : "brown"}
但你也可以写:

[
    {
        "key": "animal",
        "value": "eagle"
    },
    {
        "key": "colour",
        "value": "brown"
    }
]

如果没有,那是因为您已经了解了使用
animal['color']
数组访问animal color的优势,数组定义了不能直接在对象上运行的函数。像
排序
映射
等等

是的,我想第二个代码示例是在对象中包装数组。只是想知道是否有任何理由选择一个或另一个,因为两者似乎都是有效的,实际上是相同的!