Пустой результат при разборе JSON

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

Я пытаюсь разобрать ответ 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 Я получаю странный ответ, полный персонажи.

Любой совет в правильном направлении будет оценен.

1

Решение

Строка, возвращаемая вызовом 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
(
 знак равно> массив
(
[0] => исследование
)

[владелец] => массив
(
[репутация] => 9995
[user_id] => 1944
[user_type] => зарегистрированный
[accept_rate] => 93
[profile_image] => https://www.gravatar.com/avatar/93fc84c261cdce2e2f1d64c8e531ecb7?s=128&д = identicon&г = П.Г.
[display_name] => Чарльз Ропер
[/ NOEDIT]
3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]