我正在使用此代码尝试使用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
这种方法没问题,但我不知道如何将它变成可用的数组。
答案 0 :(得分:1)
尝试使用urlencode()而不是rawurlencode()。您发送给它的系统可能不喜欢编码。