Это тот вопрос, который я ненавижу задавать, потому что знаю, что ответ должен быть очень простым, но я не могу понять его.
Я пытаюсь разобрать ответ JSON от Stack Exchange API
но я получаю пустую строку в результате, хотя я проверил URL, а также форматирование JSON, и все кажется правильным.
Код, который я использую, просто:
$surl = file_get_contents("https://api.stackexchange.com/2.2/search?order=desc&sort=relevance&intitle=books&site=stackoverflow");
$json1 = json_decode($surl,true);
print_r($json1);
Когда я пытаюсь echo
содержание $surl
до json_decode
Я получаю странный ответ, полный �
персонажи.
Любой совет в правильном направлении будет оценен.
Строка, возвращаемая вызовом API, согласно документации Stack Exchange API был сжат
Кроме того, все ответы API сжаты. Заголовок Content-Encoding всегда установлен, но некоторые прокси-серверы его удаляют. Правильный способ декодирования ответов API можно найти здесь.
Вам нужно будет сначала распаковать строку с помощью gzdecode()
и тогда вы сможете правильно json_decode()
это как вы пытались.
$surl = file_get_contents("https://api.stackexchange.com/2.2/search?order=desc&sort=relevance&intitle=books&site=stackoverflow");
// Decode the compressed string
$surl = gzdecode($surl);
// Then you'll be able to json_decode() it...
$json1 = json_decode($surl, true);
print_r($json1);
// Prints:
Array
(
[items] => Array
(
[0] => Array
(
jsonphpstackexchange-api знак равно> массив
(
[0] => исследование
)
[владелец] => массив
(
[репутация] => 9995
[user_id] => 1944
[user_type] => зарегистрированный
[accept_rate] => 93
[profile_image] => https://www.gravatar.com/avatar/93fc84c261cdce2e2f1d64c8e531ecb7?s=128&д = identicon&г = П.Г.
[display_name] => Чарльз Ропер
[/ NOEDIT]
Других решений пока нет …