在JSON中使用方括号的目的是什么?

50

我对JSON还很陌生。我看到的一些JSON示例在花括号中有数据,而另一些JSON示例在方括号中有子数据。

{
"glossary": {
    "title": "example glossary",
    "GlossDiv": {
        "title": "S",
        "GlossList": {
            "GlossEntry": {
                "ID": "SGML",
                "SortAs": "SGML",
                "GlossTerm": "Standard Generalized Markup Language",
                "Acronym": "SGML",
                "Abbrev": "ISO 8879:1986",
                "GlossDef": {
                    "para": "A meta-markup language, used to create markup languages such as DocBook.",
                    "GlossSeeAlso": ["GML", "XML"]
                },
                "GlossSee": "markup"
            }
        }
    }
}
}

来自http://json.org/example.html

方括号内数据的需求/目的是什么?

问候


4
@Quentin,我的问题与建议的重复问题不同。 - Uswer721
不,它并没有。你正在询问[]{}之间的区别,而那个问题是在询问[]{}new Array()之间的区别。这几乎是相同的,没有实际差别。 - Quentin
@Quentin 或许吧。我认为[ ] { } 内有不同的意义。没问题,我现在懂了。 - Uswer721
5
对我来说,使用一个JSON示例的区别很重要。只要问题仍然可用,被标记为重复可能也没关系。 - MrBoJangles
9
这个理由太站不住脚了,不能仅因此就认为它是一个副本......我明白这种想法的来源,但它假定你知道JavaScript和JSON实际上是相同的东西,否则会显得很奇怪。 - Broots Waymb
这篇文章详细地讲解了问题,并对其做了彻底的回答:https://dev59.com/Cm445IYBdhLWcg3wGmk6#5034547 - Robert Mauro
2个回答

84

方括号用于创建列表/数组。

花括号用于创建带有键/值对的对象。

列表可以作为键/值对的值。


“product” 不是取决于每种语言中反序列化函数的实现吗?JSON 不只是一些纯文本规则吗?我认为只有编程语言才能有“生成数据类型或对象”的规则。 - illevens

64
[] 表示一个对象数组(列表), {} 表示一个对象。
例子:
{
    "ID":"test",
    "sports": [
        "volley-ball",
        "badminton"
    ]
}

要获取ID,您可以这样做:myjsonobject.ID(这里将获得“test”)

而对于运动:myjsonobject.sports [0](这里将获得“volley-ball”)


6
谢谢!这个例子让{ }和[ ]的概念更清晰了。 - Uswer721
1
换句话说,[ ] 是一个数组,而 { } 则是一个哈希表。对于PowerShell的人来说,[ ] 等同于 @( ),而 { } 等同于 @{ }。 - bviktor

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接