Загрузите данные Json с php, выдавшим ошибку - PullRequest
0 голосов
/ 10 марта 2012

Я использую этот код, чтобы попытаться получить данные json из многих файлов json, используя yql, чтобы скомпилировать их в один 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"

I rawurlencode выше, чтобы получить q= часть URL-адреса запроса yql.Тогда я получаю этот выведенный URL.Он прекрасно работает, когда скопируйте и вставьте отраженный URL в мой браузер, но когда я пытаюсь использовать file_get_contents в URL, я получаю это:

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

Поэтому я спрашиваю, почему это не работает, когдаЯ использую его с file_get_contents, но делает, когда я использую URL в моем браузере.Кроме того, есть ли более умный / простой способ использовать несколько файлов JSON вместе с PHP?Я попытался с помощью curl вытащить yql json и получил странный вывод, такой как:

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

Этот метод был бы хорош, но я не знаю, как получить его в пригодный для использования массив.

1 Ответ

1 голос
/ 10 марта 2012

Попробуйте использовать urlencode () вместо rawurlencode ().Системе, в которую вы ее отправляете, может не понравиться кодировка.

...