我很困惑。引用 json.org
JSON 建立在两种结构之上:
因此,我认为 '""' 不应该是有效的 JSON 字符串,因为它既不是列表值(即不以 '[' 开头并以 ']' 结尾),但 JSON.parse 不会给出异常并返回空字符串。
它是一个有效的 JSON 字符串吗?
\n\n所以,我认为不应该
\n""是一个有效的 JSON 字符串
它是一个有效的 JSON 字符串(这是一种可能出现在 JSON 文本中的数据类型)。
\n\n\n因为它既不是列表值(即不以 \'[\' 开头并以 \']\' 结尾)
\n
一个JSON文本(即一个完整的JSON文档)必须(在最外层)为\xe2\x80\xa6
\n(这里我删去了原来的答案,因为规范已被修改)。
\n\n\nJSON 文本是序列化值。
\n
(引用JSON 规范
\n""有效的 JSON 文本也是如此。当编写此答案的原始版本时,情况并非如此。当最外层的值不是对象或数组时,某些 JSON 解析器可能会中断。
原来的答案(现在不正确的简历在这里):
\n\xe2\x80\xa6 是一个对象或一个数组。字符串不是有效的 JSON 文本。
\n正式规范说:
\n\n\nJSON 文本是序列化的对象或数组。
\n
但回到这里引用问题:
\n\n\n但 JSON.parse 不会给出异常并返回空字符串。
\n
您使用的 JSON 解析器过于自由。不要假设所有 JSON 解析器都是如此。
\n例如,如果我运行perl -MJSON -E\'say decode_json(q{""})\'我会得到:
\n\nJSON 文本必须是一个对象或数组(但在 -e 第 1 行找到数字、字符串、true、false 或 null,请使用allow_nonref 允许这样做)。
\n
| 归档时间: |
|
| 查看次数: |
3565 次 |
| 最近记录: |