json_decode返回JSON_ERROR_SYNTAX但在线格式化程序说JSON是可以的
我遇到了一个非常奇怪的问题。
我有一个JSON网络服务。
当我检查它与这个网站 http://www.freeformatter.com/json-formatter.html#ad-output
一切都很好。
但是当我用这个代码加载我的JSON时:
$data = file_get_contents('http://www.mywebservice');
if(!empty($data))
{
$obj = json_decode($data);
switch (json_last_error()) {
case JSON_ERROR_NONE:
echo ' - JSON_ERROR_NONE';
break;
case JSON_ERROR_DEPTH:
echo ' - JSON_ERROR_DEPTH';
break;
case JSON_ERROR_STATE_MISMATCH:
echo ' - JSON_ERROR_STATE_MISMATCH';
break;
case JSON_ERROR_CTRL_CHAR:
echo ' - JSON_ERROR_CTRL_CHAR';
break;
case JSON_ERROR_SYNTAX:
echo "\r\n\r\n - SYNTAX ERROR \r\n\r\n";
break;
case JSON_ERROR_UTF8:
echo ' - JSON_ERROR_UTF8';
break;
default:
echo ' - Unknown erro';
break;
}
我得到错误:语法错误
这根本无济于事。
这是一场噩梦。
我看到在PHP 5.5中,我可以使用这个函数:http://php.net/manual/en/function.json-last-error-msg.php
(但我还没有成功安装PHP 5.5,我不确定这个功能会给我更多细节)