为什么只有一些JSON子类使用“[”和其他一些“{”

时间:2013-11-22 23:07:21

标签: javascript jquery json

在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"
        },

2 个答案:

答案 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确实有规则,非常小的违规可能导致无法读取部分或全部数据,具体取决于浏览器的实现。