You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP中json_decode解析嵌套JSON字符串返回null,求助排查原因

问题排查与解决方案

嘿,这个问题我之前也踩过坑!你的代码里json_decode返回null的核心原因是**$locs字符串的格式不合法**,导致JSON解析直接失败。

问题根源

你给的$locs变量外面多套了一层双引号:

$locs='"[{"locid":"101","rows":[{"itemcode":"100005","qty":10,"desc":"Potato Chips Banana Chips","locs":"101"},{"itemcode":"100002","qty":20,"desc":"mango","locs":"101"}]}]"';

这就把原本应该是JSON数组的内容,变成了一个带转义引号的普通字符串。JSON解析器看到这种结构会直接判定为语法错误,自然返回null。

你可以加一行代码验证错误类型:

echo json_last_error_msg(); // 会输出 "Syntax error"

解决方案

只需要去掉$locs外层的双引号,让它成为标准的JSON数组字符串即可:

$locs='[{"locid":"101","rows":[{"itemcode":"100005","qty":10,"desc":"Potato Chips Banana Chips","locs":"101"},{"itemcode":"100002","qty":20,"desc":"mango","locs":"101"}]}]';
$locsArray = json_decode($locs, true);
echo json_encode($locsArray);
// 现在会正确输出原JSON结构:[{"locid":"101","rows":[{"itemcode":"100005","qty":10,"desc":"Potato Chips Banana Chips","locs":"101"},{"itemcode":"100002","qty":20,"desc":"mango","locs":"101"}]}]

额外调试技巧

以后再遇到json_decode返回null的情况,一定要用json_last_error()或json_last_error_msg()来获取具体错误信息,这能帮你快速定位问题——比如格式错误、编码不兼容、嵌套层级超限等,比瞎猜高效多了!

内容的提问来源于stack exchange,提问作者Anwar Hassan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 06:29:20