原始类型是否被视为JSON?

时间:2017-01-19 02:26:39

标签: json

大多数地方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

http://www.json.org/

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" ...?

3 个答案:

答案 0 :(得分:3)

{ "astring" }无效JSON,"astring"astring也不是,因为我们需要密钥和值,例如{ KEY : VALUE }其中KEY始终是字符串,VALUE可以是字符串,数字,布尔值或null。

来自规范:

JSON Spec

  

是的,正如规范所说,JSON可以是没有的顶级原始值   包裹它的物体。 - 安迪雷

如果我理解正确,该评论不正确。有效的JSON本身永远不会一个顶级原始值。如果你仍然感到困惑,这应该清除:

  
      
  1. 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

         

    在六个中的任何一个之前或之后允许无关紧要的空白   结构特征。

  2.   

答案 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"

我目前无法访问其他解析器。