您如何表示JSON字符串数组?


182

这就是有效JSON所需的全部,对吗?

["somestring1", "somestring2"]

5
那是一个包含两个字符串的JSON数组,是的...这个问题还有更多吗?;)

我读了一些与我们都同意的说法相抵触的东西。因此,我希望在那里进行现实检查。谢谢!
finneycanhelp 2011年

4
啊,我明白了!很遗憾您不能接受自己的问题作为答案:D
Town

:)好吧,不仅仅是答案很有趣。像您这样的伟大人物,可以帮助使该网站取得成功!
finneycanhelp

Answers:


296

我将进一步详细介绍ChrisR出色的答案,并从他的出色参考中获取图像。

有效的JSON始终以大括号{或方括号开头[,仅此而已。

{将开始object

左花括号后跟一个键字符串(一个不能重复的名称,用引号引起来),冒号和一个值(如下所示的有效类型),然后是一个可选的逗号,可以随意添加更多对字符串和值,并以右括号

{ "key": value, "another key": value }

提示:尽管javascript接受单引号',但JSON只接受双引号"

[将开始array

左括号后跟数值,可选的逗号可随意添加更多价值,并以右括号结尾

[value, value]

提示:元素之间的空格始终被任何JSON解析器忽略。

而且valueobjectarraystringnumberboolnull

该图显示了JSON值的6种类型,可以是:字符串,数字,JSON对象,数组/列表,布尔值和null

是的,这["a", "b"]是一个完全有效的JSON,就像您可以尝试Manish指向的链接一样

这是一些额外的有效JSON示例,每个块一个:

{}

[0]

{"__comment": "json doesn't accept comments and you should not be commenting even in this way", "avoid!": "also, never add more than one key per line, like this"}

[{   "why":null} ]

{
  "not true": [0, false],
  "true": true,
  "not null": [0, 1, false, true, {
    "obj": null
  }, "a string"]
}

22
如此
出色的

JSON是否必须有双引号?我试图验证上述OP的字符串,但在jsonlint.com上用单引号引起来,它告诉我它无效。但这在使用双引号时有效。

像往常一样,@ Ray并没有简单的是或否答案,尽管我会说这主要是“是的,只是用双引号引起来”。json.org仅告诉我们有关使用双引号的信息,大多数地方可能会跟在它后面。但是,这是对此的更深入研究:stackoverflow.com/a/2275428/274502
cregox

61

在这种情况下,您的JSON对象是一个列表。JSON几乎总是一个带有属性的对象。一组一个或多个key:value对,因此您很可能会看到字典:

{ "MyStringArray" : ["somestring1", "somestring2"] }

那么您可以要求输入的值,"MyStringArray"然后返回两个字符串的列表,"somestring1""somestring2"


12
您发布的代码示例无效,当您尝试将该字符串解析为json时,它将引发错误/异常。您说JSON始终是键/值对的事实也是天生的错误。JSON规范中没有任何内容表明您需要键/值对。在谈论数据传输时,键/值对确实是最有用的结构,但是OP张贴的字符串是完全有效的JSON:codebeautify.org/jsonviewer/92ac7b
ChrisR 2014年

1
我脑中有API,您想在其中基于键在数组中查找值。对于一个未命名的数组,它应该是{“ 1”:“ somestring1”,“ 2”:“ somestring2”}
PapaSmurf 2014年

41

基本上可以,JSON只是您的值的JavaScript文字表示形式,因此您所说的是正确的。

您可以在http://json.org/上找到有关JSON表示法的清晰明了的很好的解释。


5
String strJson="{\"Employee\":
[{\"id\":\"101\",\"name\":\"Pushkar\",\"salary\":\"5000\"},
{\"id\":\"102\",\"name\":\"Rahul\",\"salary\":\"4000\"},
{\"id\":\"103\",\"name\":\"tanveer\",\"salary\":\"56678\"}]}";

这是一个JSON字符串Employee作为对象的示例,然后将数组中的多个字符串和值作为对@cregox... 的引用。

有点复杂,但是可以用单个JSON字符串解释很多内容。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.