在JSON中,子类别有时使用“{”定义,有时使用“[”定义。
在此示例中:游戏 - >框 - >模板,为什么“[仅限游戏后?”
如何在JSON中定义以下XML。我应该如何以及何时使用“[”和“{”?
<games>
<game id="21934">
<name>Star Wars: The Old Republic</name>
<popularity>30</popularity>
</game>
</games>
您能否与我进行良好的比较?
"games": [
{
"name": "Star Wars: The Old Republic",
"popularity": 30,
"id": 21934,
"giantbomb_id": 24205,
"box": {
"template": "http://static-cdn.jtvnw.net/ttv-boxart/Star%20Wars%3A%20The%20Old%20Republic-{width}x{height}.jpg",
"small": "http://static-cdn.jtvnw.net/ttv-boxart/Star%20Wars%3A%20The%20Old%20Republic-52x72.jpg",
"medium": "http://static-cdn.jtvnw.net/ttv-boxart/Star%20Wars%3A%20The%20Old%20Republic-136x190.jpg",
"large": "http://static-cdn.jtvnw.net/ttv-boxart/Star%20Wars%3A%20The%20Old%20Republic-272x380.jpg"
},
答案 0 :(得分:2)
[]
语法适用于按数字查找成员的数组。
{}
语法适用于按名称查找成员的对象。
答案 1 :(得分:2)
您可以阅读documentation at json.org来最好地回答这个问题。
[]用于定义数组,而{}用于声明对象。对象实际上是一种关联数组(将名称索引映射到值而不是数字 指数值)。但是,在JSON数组中,数字索引是隐式的。
JSON的主要优点是它是Javascript的一个子集,与XML相比,它是一种紧凑的数据交换格式,后者更加冗长。 JSON数据只需要最少的验证,而XML需要复杂的解析。 JSON还牺牲了所谓的XML的可读性元素,尽管从个人角度来说,我发现扫描JSON比查找XML元素和属性更容易找到错误。
以游戏为例,在XML中,游戏列表将是这样的:
<games>
<game id="21934">
<name>Star Wars: The Old Republic</name>
<type>MMORG</type>
</game>
<!-- more game blocks here -->
<game id="12345">...</game>
</games>
在上面的示例中,我跳过了一些细节,例如声明它是一个XML文档,将上述文件链接到数据类型定义(DTD)等。
在JSON中,文件可能就是这样:
{
"games": [
{ "id": 21934, "name" : "Star Wars: The Old Republic", "type": "MMORG" },
{ "id": 12345, .... }
]
}
您可以将上述对象直接读入Javascript变量,并且无需进一步处理即可接受为有效的javascript。它更快更容易相处。需要注意的一点是,尽管“游戏”是一个对象数组,但它已被封装在{}中,以便作为单个对象读取。
总而言之,XML是一种交换信息的正式方式,而JSON则牺牲了易用性和使用速度的形式。但请注意,JSON确实有规则,非常小的违规可能导致无法读取部分或全部数据,具体取决于浏览器的实现。