使用json_decode解析JSON数据返回NULL的原因排查
JSON解码返回NULL的原因及修复
你的JSON字符串存在多处格式错误,导致json_decode无法解析,返回NULL。具体问题如下:
- 对象键名未加双引号:JSON规范要求所有对象的键必须用双引号包裹,比如原代码中的
id:0不符合规范,必须写成"id":0。 - 末尾语法错误:原JSON最后部分的
] }] };存在多余的方括号和分号,正确的闭合应该是] }。 - 数组元素后多余逗号:最后一个
data对象后面的逗号(}, ])是无效的,JSON不允许数组最后一个元素后保留逗号。 - PHP变量赋值错误:在PHP中,JSON字符串需要用引号包裹,原代码直接写
$json = { ... };会导致语法错误,应该改为$json = '{ ... }';。
修正后的JSON代码
$json = '{ "rows": [ { "id": 0, "data": ["DLD224364", "13", "10.16.162.169", "4", "το ...", "2022-10-05 21:18:21"] }, { "id": 1, "data": ["DLD22364", "13", "10.16.162.164", "4", "το ...", "2022-10-05 21:17:47"] }, { "id": 2, "data": ["DLD224367", "67", "10.16.162.164", "4", "το ...", "2022-10-05 20:47:55"] }, { "id": 3, "data": ["DLD224335", "22", "10.16.162.169", "4", "το ...", "2022-10-05 20:36:03"] }, { "id": 4, "data": ["DLD224329", "38", ".162.169", "4", "το ...", "2022-10-05 20:26:55"] }, { "id": 5, "data": ["DLD024285", "58", "", "4", "το ...", "2022-10-05 17:41:08"] } ] }';
问题排查技巧
如果后续再遇到JSON解析失败的情况,可以用json_last_error_msg()获取具体错误信息,快速定位问题:
$result = json_decode($json, true); if ($result === null) { echo json_last_error_msg(); }
内容的提问来源于stack exchange,提问作者Markos
相关产品推荐
相关产品推荐

