''“'是一个有效的JSON字符串吗?

我很困惑。 引用json.org

JSON建立在两个结构上:

  • 名称/值对的集合。 在各种语言中,这被实现为对象,记录,结构,字典,散列表,键控列表或关联数组。
  • 有序的值列表。 在大多数语言中,这是作为数组,矢量,列表或序列实现的。
  • 所以,我不认为''''应该是一个有效的JSON字符串,因为它既不是一个列表值(即不以'['开始并以']'结尾),但JSON.parse不会给出异常并返回空字符串。

    它是一个有效的JSON字符串。


    所以,我不认为""应该是一个有效的JSON字符串

    它是一个有效的JSON字符串(这是一种可能出现在JSON文本中的数据类型)。

    因为它既不是一个列表值(即不以'['开始并以']'结尾)

    JSON 文本 (即完整的JSON文档)必须(在最外层)是对象或数组。 一个字符串不是有效的JSON文本。

    正式的规范说:

    JSON文本是一个序列化的对象或数组。

    但回到这里引用这个问题:

    但JSON.parse不会给出异常并返回空字符串。

    您使用的JSON解析器过于自由。 不要以为所有的JSON解析器都会。

    例如,如果我运行perl -MJSON -E'say decode_json(q{""})'我得到:

    在-e第1行,JSON文本必须是一个对象或数组(但找到数字,字符串,true,false或null,使用allow_nonref来允许)。


    不, '' 不是有效的JSON。 JSON.parse('')确实会引发错误 - 只需在浏览器控制台中查看即可。

    下次你有一个“这是有效的JSON?” 问题,只需通过JSON验证程序运行即可。 这就是他们存在的原因。


    遵循最新的JSON RFC 7159, ""实际上是有效的JSON。 但在一些早期的标准中并不是这样。

    引用:

    JSON文本是一系列令牌。 这组令牌包括六个结构字符,字符串,数字和三个字面名称。

    JSON文本是一个序列化的值。 请注意,某些先前的JSON规范将JSON文本约束为对象或数组。 只生成对象或数组的JSON文本被调用的实现将是可互操作的,因为所有实现都将接受这些JSON文本为符合条件的JSON文本。

    链接地址: http://www.djcxy.com/p/37859.html

    上一篇: Is '""' a valid JSON string?

    下一篇: issues with quotes in json string :php