大多数地方JSON的格式都是
{
color: "red",
value: "#f00"
}
或者
[
{ color: "red", value: "#f00" },
{ color: "red", value: "#f00" }
]
我想问的是原始类型如string,bool,int也是JSON?
我找到了以下链接,
http://json-schema.org/latest/json-schema-core.html
https://zh.wikipedia.org/wiki/JSON
https://www.ietf.org/rfc/rfc4627.txt
http://www.c-sharpcorner.com/uploadfile/3d39b4/data-types-in-json/
和
在RFC4627中它说
JSON可以表示四种基本类型(字符串,数字,布尔值, 和null)和两个结构化类型(对象和数组)。
字符串是零个或多个Unicode字符的序列[UNICODE]。
对象是零个或多个名称/值的无序集合 对,其中名称是字符串,值是字符串,数字, boolean,null,object或array。
数组是零个或多个值的有序序列。
术语“对象”和“数组”来自于惯例 的JavaScript。
所以我把它读作纯字符串,数字布尔像
"a string"
100
true
都是JSON,
但我的两位同事认为原始类型只能是对象的价值,
{ ASTRING : "astring" }
是JSON,
如果只有"a string"
,则不会调用它,因为它不是JSON格式,
我想我,我的同事可能不够专业,无法判断它,
所以我想知道,纯粹的原始类型是JSON吗?
另一个想法是,JSON被称为交换数据的便捷方式,但如果这种格式不支持纯字符串,
也就是说,如果我只是想抛弃一个字符串,我不能用JSON来做它?
并且必须强制将其更改为{ Message : "a message"}
,
并且不能使用我认为更简单的方式抛出"a message"
...?
答案 0 :(得分:3)
{ "astring" }
无效JSON,"astring"
或astring
也不是,因为我们需要密钥和值,例如{ KEY : VALUE }
其中KEY
始终是字符串,VALUE
可以是字符串,数字,布尔值或null。
来自规范:
是的,正如规范所说,JSON可以是没有的顶级原始值 包裹它的物体。 - 安迪雷
如果我理解正确,该评论不正确。有效的JSON本身永远不会一个顶级原始值。如果你仍然感到困惑,这应该清除:
- 醇>
JSON语法
JSON文本是一系列令牌。这组令牌包括 六个结构字符,字符串,数字和三个字面值 名。
JSON文本是序列化对象或数组。
JSON-text = object / array
这是六个结构特征:
begin-array = ws %x5B ws ; [ left square bracket
begin-object = ws %x7B ws ; { left curly bracket
end-array = ws %x5D ws ; ] right square bracket
end-object = ws %x7D ws ; } right curly bracket
name-separator = ws %x3A ws ; : colon
value-separator = ws %x2C ws ; , comma
在六个中的任何一个之前或之后允许无关紧要的空白 结构特征。
答案 1 :(得分:2)
相关RFC是RFC 7159,而不是RFC 4627. RFC 4627是"信息"。 RFC 7159是"标准跟踪&#34 ;;它explicitly obsoletes RFC 4627。
Request for Comments: 7159 Google, Inc. Obsoletes: 4627, 7158 March 2014 Category: Standards Track ISSN: 2070-1721
在RFC 7159的文本中,您可以找到它。
13. Examples This is a JSON object: { "Image": { "Width": 800, "Height": 600, "Title": "View from 15th Floor", "Thumbnail": { "Url": "http://www.example.com/image/481989943", "Height": 125, "Width": 100 }, "Animated" : false, "IDs": [116, 943, 234, 38793] } }
[剪断]
Here are three small JSON texts containing only values: "Hello world!" 42 true
答案 2 :(得分:1)
FWIW,这是命令行JSON解析器prgram jq的输出:
$ echo "{ foo }" | jq .
parse error: Invalid literal at line 1, column 6
$ echo "{ \"foo\" }" | jq .
parse error: Objects must consist of key:value pairs at line 1, column 9
$ echo "\"foo\"" | jq .
"foo"
我目前无法访问其他解析器。