NULL
,这有效,但返回json_decode("['foo','bar']", true)
,json_last_error()
。 4
输出JSON_ERROR_SYNTAX
,json_decode(str_replace('"', '"', "['foo','bar']"), true)
。
我已经从以下问题中检查了一些答案;
json_decode() returns null issues
PHP json_decode() returns NULL with valid JSON?
json_decode returns NULL after webservice call
并尝试了以下解决方案,但没有成功;
json_decode(stripslashes(str_replace('\"', '"', "['foo','bar']")), true)
json_decode(stripslashes("['foo','bar']"), true)
json_decode(utf8_encode("['foo','bar']"), true)
"['foo','bar']"
我不认为它与UTF-8有关。这是一个PHP错误吗?或者,如何将'["foo","bar"]'
转换为JSON
作为解决方法?
答案 0 :(得分:0)
您没有为函数提供有效的json。如果您使用javascript数组
["foo","bar"]您应该使用JSON.stringify在js端实际生成JSON。
答案 1 :(得分:0)
JSON字符串引用双引号"
。单引号'
(在PHP中很常见)不是有效的JSON。没有讨论。因此,输入['foo','bar']
无效json且json_decode
正确拒绝解析。
另见ECMA-404,它定义了JSON格式:
字符串是一系列用引号括起来的Unicode代码点(U + 0022)。 1
如果您正在寻找能够转换JSON-ish字符串的内容(它来自何处?将无效JSON的来源,最好是)修改为有效的JSON; str_replace('\'', '"', $jsonInput)
应该在简单的情况下工作。
1 (U+0022
是双引号"
)