Php 无法解码JSON
我猜里面可能有个隐藏的角色 JSON数据: 下面是我正在使用的响应 {“请求”:{“命令”:“系列”,“系列id”:“ng.n3010us3.a”},“数据”:{“错误”:“无api_密钥。有关密钥注册、文档和示例,请参阅http://www.eia.gov/developer/“}} 我所做的:Php 无法解码JSON,php,json,Php,Json,我猜里面可能有个隐藏的角色 JSON数据: 下面是我正在使用的响应 {“请求”:{“命令”:“系列”,“系列id”:“ng.n3010us3.a”},“数据”:{“错误”:“无api_密钥。有关密钥注册、文档和示例,请参阅http://www.eia.gov/developer/“}} 我所做的: 使用文件获取内容从URL获取数据 使用json_解码($rawjson,TRUE);使其成为一个数组。->错误 json_last_error_消息显示“Syntax error” 我正在试图找到导致
我正在试图找到导致问题的字符。如前所述,响应包括一个
BOM
序列。请参阅有关字节顺序标记的更多信息 您可以这样删除它:
$j = file_get_contents("http://api.eia.gov/series/?api_key=&series_id=NG.N3010US3.A");
$o = json_decode(remove_bom($j));
var_dump($o);
function remove_bom($string)
{
$bom = pack('H*','EFBBBF');
$text = preg_replace("/^$bom/", '', $text);
return $sring;
}
不能复制。您确定这就是您的脚本正在处理的数据吗?表示您的JSON是完美的。尝试使用json_解码,效果非常好。在这里和代码中包含代码,就在
json_decode($rawjson,true)之前
,doecho$rawjson
并包括在您的帖子中回响的内容。@zedfoxus echo$rawjson;显示完全相同。如果你复制粘贴我的数据,解码就不会有任何问题。但是当使用file_get_内容时,json_decode将无法使用Alex提供的非常好的解决方案。当您执行文件获取内容时,字节顺序标记序列将与JSON一起接收。这就是你遇到麻烦的原因。亚历克斯的解决方案会让你走的。如果你仍然有问题,请随时发表评论