【问题标题】:Does JSON grammar allow bare labels for elements? and are single quotes allowed?JSON 语法是否允许元素的裸标签?并且允许单引号吗?
【发布时间】:2014-10-31 04:05:03
【问题描述】:

检查 JSON.org 铁路(语法)定义后,似乎元素的标签和值对(标签:值)需要在标签周围加上引号。是否始终需要引号,或者是否允许在简单的单词中省略引号?

示例 - 这似乎是合法的,

{ "vehicle" : { "type" : "truck", "year" : 1954, "make" : "ford" } }

示例 - 这是否合法?

{ vehicle : { type : "truck", year : 1954, make : "ford" } }

另外,是否允许使用单引号 ('),还是只允许使用双引号 (")?例如,

{ 'vehicle' : { 'type' : 'truck', 'year' : 1954, 'make' : 'ford' } }

许多语言允许标签是裸露的,而 Ruby(例如)允许符号以冒号 (:) 为前缀,例如,

:fruit

【问题讨论】:

    标签: json string label grammar


    【解决方案1】:

    是的,根据official JSON spec,每个字符串都需要双引号(并且只有双引号),包括对象键。

    这只是 JSON 是 Javascript 对象文字符号的子集而不是完整实现的原因之一。

    【讨论】:

    • 在完成了相当多的 javascript、perl 和 ruby​​ 之后,我认为 JSON 将允许使用“裸”标签/标签以获得更灵活(更简单?)的语法。
    • 我认为他们这样做是为了提供一组更严格、更不容易出错的规则来验证字符串数据。
    • 在重新检查 JSON 规范(作为向需要 JSON 的 Web api 提供元数据的一部分)时,我突然想到 JSON 可能被指定为不需要引号 :-)跨度>
    • 是的,他们可以拥有(您甚至可能会发现不符合标准的 JSON 解析器,其中不带引号的键将在没有错误的情况下进行解析),但 JSON 规范将需要一组不同的键规则。我认为如此简单是 JSON 的优势之一,即使它确实需要一些额外的字节来传递相同的数据。
    • 已经构建了一些 DSL。我认为允许“裸”标签/标签或同时允许单引号和双引号对于复杂性的成本很低,并且增加了灵活性(我的 $.02)。
    【解决方案2】:

    JSON 语法是 JavaScript 对象表示法语法的子集: •数据在名称/值对中 •数据用逗号分隔 • 花括号可容纳对象 •方括号存放数组

    我认为 - http://www.w3schools.com/json/json_syntax.asp 会澄清你的问题。

    【讨论】:

    • 并非所有数据都在名称/值对中。一个数字数组是有效的。
    猜你喜欢
    • 2016-03-21
    • 1970-01-01
    • 2010-09-21
    • 1970-01-01
    • 1970-01-01
    • 2012-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多