Php JSON对象的正确标签语法

Php JSON对象的正确标签语法,php,javascript,json,portability,jslint,Php,Javascript,Json,Portability,Jslint,在JSON标签上似乎有不同的标准,有些人希望在JSON对象标签周围加引号,有些人不希望。有人能告诉我标准是什么吗 报价很糟糕 Chrome {“label”:1111}-语法错误:意外标记: {label:1111}-有效 Firefox {“标签”:1111}-语法错误:无效标签 {label:1111}-有效 报价是很好的选择 JSLint {“video_id:1111}-JSON:good {video\u id:1111}-JSON:bad。应为字符串,但看到的是“video\u id

在JSON标签上似乎有不同的标准,有些人希望在JSON对象标签周围加引号,有些人不希望。有人能告诉我标准是什么吗

报价很糟糕 Chrome

{“label”:1111}
-语法错误:意外标记:

{label:1111}
-有效

Firefox

{“标签”:1111}
-语法错误:无效标签

{label:1111}
-有效

报价是很好的选择 JSLint

{“video_id:1111}
-JSON:good

{video\u id:1111}
-JSON:bad。应为字符串,但看到的是“video\u id”

PHP

echo json_encode(array('label' => 1111));
{"label":1111}

标准是将JSON解析为JSON

JSON语言(与Javascript不同)总是要求所有属性名都用双引号括起来

您的语法错误来自尝试将JSON解析为Javascript语句。
{}
被解析为语句块,
标签:
被解析为转到目标。
由于语句标签不能有引号,因此会导致语法错误


如果将JSON文本用括号括起来,强制Javascript将其解析为表达式,则不会出现该错误。

+1刚刚得出语句结论,尽管速度较慢:-)作为澄清,您应该始终使用
JSON.parse()
-eval解析JSON,而注入是不安全的。正如SLaks所说,由于
{}
被视为一个语句/作用域块,所以会出现错误。您需要的是JSONLint,而不是JSLint。如果您在控制台中查看
{label:1111}
的结果,您不会这么说。另外:该标准在上可用,但为了节省一些阅读,该标准需要在标签周围加引号。哇,我没有意识到Javascript对象和JSON之间有区别。谢谢大家的澄清!