通过示例最容易解释:
var_dump(json_decode("[{'a':'b'},{'c':'d'},{'e':'f'}]")); // NULL
var_dump(json_decode('[{"a":"b"},{"c":"d"},{"e":"f"}]')); // array(3) { [0]=> object(stdClass)#1 (1) { ["a"]=> string(1) "b" } [1]=> object(stdClass)#2 (1) { ["c"]=> string(1) "d" } [2]=> object(stdClass)#3 (1) { ["e"]=> string(1) "f" } }
Run Code Online (Sandbox Code Playgroud)
如您所见,第一个使用单引号的示例返回NULL表示错误,而第二个工作正常.
任何想法为什么它正在做它或我可以做什么来帮助防止除了做一堆字符串操作之外的问题?
JSON中的字符串定义为:
""
" chars "
Run Code Online (Sandbox Code Playgroud)
换句话说,JSON字符串需要双引号(不是单引号).你是如何得到这个JSON的?我们可以看一下在解码之前验证/修复字符串的可能解决方案.
资料来源:http://www.json.org/和http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf
值可以是双引号中的字符串,或者[...]