用php加载Json数据给出错误

时间:2012-03-09 20:47:00

标签: php json yql eof

我正在使用此代码尝试使用yql从许多json文件中获取json数据,以将它们编译为一个json。

我的yql查询采用以下格式:

select * from json where 
url="http://ebird.org/ws1.1/data/obs/region_spp/recent?rtype=subnational2&r=US&sci=Dendrocygna%20autumnalis&fmt=json" 
or url = "http://ebird.org/ws1.1/data/obs/geo_spp/recent?lng=-119.859512&lat=34.410240&sci=Dendrocygna%20autumnalis&dist=49&back=14&maxResults=10000&fmt=json&includeProvisional=true" 
and itemPath = "json.json"

rawurlencode以上获取yql查询网址的q=部分。然后我得到这个输出的网址。将回显的网址复制并粘贴到我的浏览器中时,它可以正常工作,但是当我尝试在网址上使用file_get_contents时,我得到了这个:

cbfunc({"error":{"lang":"en-US","diagnostics":{"publiclyCallable":"true"},"description":"Query syntax error(s) [line 1:3675 missing EOF at '_']"}});

所以我问,为什么当我在file_get_contents使用它时它不起作用,但是当我在浏览器中使用url时。此外,是否有更智能/更简单的方法与PHP一起使用多个json文件?我尝试使用curl来拉取yql json并得到一个奇怪的输出,如:

8<\/howMany>34.4136<\/lat>-119.8756<\/lng>L615794

这种方法没问题,但我不知道如何将它变成可用的数组。

1 个答案:

答案 0 :(得分:1)

尝试使用urlencode()而不是rawurlencode()。您发送给它的系统可能不喜欢编码。