如何移除JSON末尾多余逗号解决json_decode返回NULL的问题
解决PHP json_decode返回NULL问题(JSON尾部逗号异常场景)
问题原因
json_decode返回NULL的核心原因是你获取到的JSON不符合标准语法规范,最后一个键值对"fast": "H"末尾存在多余的逗号,PHP原生JSON解析遵循严格标准,遇到语法错误就会返回NULL。
你提供的异常JSON内容如下:
{ "returnCode": "0", "returnMessage": "bla bla bla message", "fast": "H", }
你可以调用json_last_error()验证,返回结果为JSON_ERROR_SYNTAX,即JSON语法错误。
解决方案
方案1(优先选择):修正接口输出
对接接口提供方调整JSON生成逻辑,移除最后一个键值对后的多余逗号,保证输出符合标准JSON规范,即可正常解析。
方案2(临时兼容):本地清理异常语法
如果无法调整接口输出,可以通过正则清理JSON结构中的尾部逗号后再解析,示例代码如下:
// 你的cURL返回的原始响应字符串 $response = '你的原始响应内容'; // 清理对象/数组尾部的多余逗号 $cleaned_response = preg_replace('/,\s*([\]}])/m', '$1', $response); // 解析处理后的JSON $result = json_decode($cleaned_response, true); // 验证解析结果 var_dump($result);
注意:临时兼容方案仅适用于简单的尾部逗号异常场景,若JSON内容本身包含
,}或,]格式的字符串值会出现误匹配,仅做临时应急使用,不推荐长期依赖。
内容的提问来源于stack exchange,提问作者ozan
相关产品推荐
相关产品推荐

