我有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));
我错过了什么或使用错了吗?
答案 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));