json_decode php5.3错误还是想念?

时间:2011-10-06 08:26:00

标签: php json

我有JSON字符串,如:

'"[{\"type\": \"EDITOR\", \"value\": \"fsddfsdsfdfs\"}, {\"type\": \"CITA\", \"value\": \"Bug:\\n\\t\\t\\t\\t\\t0 open / 0\\n\\t\\t\\t\\n \\n Feature:\\n\\t\\t\\t\\t\\t1 open / 1\\n\\t\\t\\t\"}]"'

json_decode无法对其进行解码。

从开始和结束中删除“标记使其正常工作

'[{\"type\": \"EDITOR\", \"value\": \"fsddfsdsfdfs\"}, {\"type\": \"CITA\", \"value\": \"Bug:\\n\\t\\t\\t\\t\\t0 open / 0\\n\\t\\t\\t\\n \\n Feature:\\n\\t\\t\\t\\t\\t1 open / 1\\n\\t\\t\\t\"}]'

测试代码

$test1 = '"[{"type": "EDITOR", "value": "fsddfsdsfdfs"}, {"type": "CITA", "value": "Bug: 0 open / 0 Feature: 1 open / 1 "}]"';
print_r(json_decode($test1));
echo json_last_error().'<br>';
$test2 = '[{"type": "EDITOR", "value": "fsddfsdsfdfs"}, {"type": "CITA", "value": "Bug: 0 open / 0 Feature: 1 open / 1 "}]';
print_r(json_decode($test2));

我错过了什么或使用错了吗?

3 个答案:

答案 0 :(得分:2)

“开头和结尾处的标记将其内容标记为字符串,禁用解析器以检测对象({})和数组([])

按照您的发现删除它,它会起作用。

答案 1 :(得分:2)

您不应该将字符串称为“JSON字符串”,因为它不是。你肯定没有使用json_encode()得到这个字符串。 grammar for JSON只有两个顶级作品:

JSON is either an object {...} or an array [...] (and nothing else)

由此得出:

JSON-string is either "{...}" or "[...]" or '{...}' or '[...]' (and nothing else)

答案 2 :(得分:0)

从php5.2转到5.3后,这也出现在我身上。

我有一个脚本,使用JSON.stringify(响应)从javascript发送,并在PHP中使用json_decode接收,并且它停止工作。

不知道两个php版本的差异,但我不得不添加stripslashes让我再次工作。

$阵列= json_decode(的stripslashes($ IDS));