Php 无法解码JSON

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” 我正在试图找到导致

我猜里面可能有个隐藏的角色

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)之前
    ,do
    echo$rawjson
    并包括在您的帖子中回响的内容。@zedfoxus echo$rawjson;显示完全相同。如果你复制粘贴我的数据,解码就不会有任何问题。但是当使用file_get_内容时,json_decode将无法使用Alex提供的非常好的解决方案。当您执行文件获取内容时,字节顺序标记序列将与JSON一起接收。这就是你遇到麻烦的原因。亚历克斯的解决方案会让你走的。如果你仍然有问题,请随时发表评论