一次API调用时json_decode JSON_ERROR_UTF8,在复制/粘贴时传递验证测试,所有其他API调用都正常

时间:2017-04-28 16:29:49

标签: php json api

我正在开发一个项目,它使用他们的工作因为你的API(英国政治数据组织),特别是函数getMPInfo(),它获取MP(议会成员)的ID并返回大量关于它们的数据(当它们来时)到办公室,他们在办公室待了多久等等。)

我遇到的问题是以下代码行适用于我尝试的每个ID,除了一个(我到目前为止找到的):

var_dump(json_decode(file_get_contents("http://www.theyworkforyou.com/api/getMPInfo?key=MY_KEY&id=SOME_ID&output=js")));

如果我执行json_last_error()调用,我会在该ID上获得JSON_ERROR_UTF8。

相关ID是10999.您可以在docs section of their api portal here中试用。

如果我只是将http://www.theyworkforyou.com/api/getMPInfo?key=MY_KEY&id=10999&output=js输出到屏幕并将其复制并粘贴到json验证器中,它似乎可以通过测试。到目前为止,我已经尝试了3次,没有人发现过错。

任何人都可以看到问题是什么或我可能做错了什么?它当然可能是API的错误,但我以前从未遇到过使用此API的任何json解析错误的问题(我过去几年一直在与所有MP一起使用它),它适用于我尝试过的所有其他MP ID,就像我说的那样,从在线验证器的角度来看,它似乎是有效的json。

感谢您的时间。

P.S。我不确定如果没有API密钥可以复制我的问题,here is a link to the api portal homepage您可以在其中注册API密钥。

1 个答案:

答案 0 :(得分:0)

JSON_ERROR_UTF8错误表示

  

格式错误的UTF-8字符,可能编码错误

json_encode

  

所有字符串数据必须是UTF-8编码

因此,您只需要utf8_encode输入,然后再将其传递给json_encode