首页  >  文章  >  后端开发  >  如何解决 JSON_DECODE() 中的“语法错误”尽管有效的 JSON 格式?

如何解决 JSON_DECODE() 中的“语法错误”尽管有效的 JSON 格式?

DDD
DDD原创
2024-10-22 22:02:29458浏览

How to Resolve

JSON_ERROR_SYNTAX 尽管在线格式化程序上的 JSON 有效

当 JSON 在外部格式化程序上显示有效时,遇到来自 json_decode() 的“语法错误”响应可能会令人费解。这是一个全面的解决方案:

隐藏字符删除:

不可见字符可能会导致语法错误。使用以下代码删除这些字符:

<code class="php">$json = file_get_contents('http://www.mywebservice');

// Remove unwanted characters
for ($i = 0; $i <= 31; ++$i) { $json = str_replace(chr($i), "", $json); }
$json = str_replace(chr(127), "", $json);

// Handle BOM (Byte Order Mark)
if (0 === strpos(bin2hex($json), 'efbbbf')) { $json = substr($json, 3); }</code>

解码清理后的 JSON:

现在隐藏的字符已被删除,解码 JSON:

<code class="php">$obj = json_decode($json);</code>

错误处理:

如果解码仍然失败,请使用 json_last_error() 检查具体错误代码:

<code class="php">switch (json_last_error()) {
    case JSON_ERROR_NONE:
        echo 'JSON_ERROR_NONE';
        break;
    case JSON_ERROR_DEPTH:
        echo 'JSON_ERROR_DEPTH';
        break;
    // ... Other error codes
    default:
        echo 'Unknown Error';
        break;
}</code>

按照以下步骤,您可以可以纠正 JSON 语法错误并成功解码 JSON 数据。 PHP 5.5 的 json_last_error_msg() 函数提供了额外的错误详细信息,但在解决隐藏字符和解码问题后可能不需要。

以上是如何解决 JSON_DECODE() 中的“语法错误”尽管有效的 JSON 格式?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn