json_decode () начал возвращать NULL - PullRequest
0 голосов
/ 11 июля 2020

У меня есть PHP скрипт, который использует json_decode () для преобразования ответа curl в ассоциативный массив. Скрипт нормально работал около месяца. Без каких-либо изменений json_decode () начал возвращать NULL.

Я проверил, curl работает нормально, он возвращает строку JSON, но когда я передаю ответ json_decode (), я получаю NULL.

Согласно руководству PHP, json_decode () возвращает NULL, когда предел рекурсии превышен. Я изменил значение ограничения рекурсии в ini-файле, но это не сработало.

$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($curl);
curl_close($curl); 
$decode = json_decode($response, true);

Я должен отметить, что строка ответа curl довольно большая.

Есть идеи?

Ответы [ 2 ]

0 голосов
/ 13 июля 2020

Используя предложенную функцию json_last_error (), я получил ответ на свой вопрос. проблема не устранена, но я не могу ее контролировать, и я знаю, в чем проблема. Всем спасибо.

0 голосов
/ 11 июля 2020

Это сработало для меня. Вероятно, некоторые скрытые символы мешают вашей JSON строке

$decode = json_decode(utf8_encode($response));

Также, если вокруг вашей JSON строки есть какие-либо строковые отступы, json_decode вернет NULL, поэтому было бы лучше обрезать его перед использованием это в json_decode, особенно если вы получаете данные с сайтов, отличных от PHP.

$response = trim($response);
$decode = json_decode($response);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...