我为一个朋友的 wordpress 网站编写了一个 API,它依赖 JSON API 插件来获取她最近帖子的 JSON 提要。它运行了几个月完美无缺,但几天前,当她的共享主机切换到 PHP 5.3 时,它完全停止运行(当然,他们没有提醒他们的用户——他们为什么要提醒他们?)
我四处寻找,在接受 JSON 字符串并将解码的 JSON 对象返回给另一个函数的代码部分中发现了一个奇怪的错误。以前,代码(有效,我发誓!)是这样工作的:
$json_string = file_get_contents($url_to_json_string);
return json_decode($json_string);
这开始返回 NULL,而 json_last_error 为 4(语法错误。)我检查了 utf8_encoding: 很好。我检查了 BOM 奇怪性(根据这篇文章):很好。我在jsonlint.com和json.parser.online.fr中验证了 JSON 字符串,它完全有效。没有杂散的实体,没有游荡的斜线。JSON 字符串本身很好,应该已经过验证。
然后,我将代码更改为:
$json_string = file_get_contents($url_to_json_string);
$json_object = json_decode($json_string);
return $json_object;
它奏效了。
有谁知道为什么会这样?