PHP - json_decode не работает при выполнении запроса на завивание

У меня есть массив PHP в исходном файле - source.php; и я конвертирую его в json через $ouput = json_encode($ouput);. Переменная $output уже является массивом.

$ouput = json_encode($ouput);
echo  '<pre>';
print_r($ouput);
echo  '</pre>';

Json хорошо отображается, когда я вызываю его в своем целевом файле, используя cURL в качестве строки, закодированной в json. Однако, когда я хочу преобразовать строку в массив PHP, ничего не отображается.

$displayReturns = curl_exec($curl);
curl_reset($curl);
curl_close($curl);
$displayReturns = json_decode($displayReturns,true);
print_r($displayReturns);

Можете ли вы отправить нам вывод json?

pr1nc3 14.03.2019 14:28
var_dump($displayReturns) проверьте, что у вас получилось, и поделитесь результатом.
devpro 14.03.2019 14:29

Вы проверили на ошибки echo json_last_error_msg()

RiggsFolly 14.03.2019 14:29

@ pr1nc3 - без докода json это выглядело бы как {"user-data":{"user":"hello-com-01","client":"43cb6a1a17a15f‌​2fdc641e935ea1c9467f‌​5d742b107c6798d"}}

ACDC 14.03.2019 14:32

я пробовал и все работает нормально json_decode('{"user-data":{"user":"hello-com-01","client":"4‌​3cb6a1a17a15f2fdc641‌​e935ea1c9467f5d742b1‌​07c6798d"}}',true)

devpro 14.03.2019 14:34

@RiggsFolly Это говорит мне Syntax error

ACDC 14.03.2019 14:36

Тогда ваш JSON по какой-то причине неправильно сформирован

RiggsFolly 14.03.2019 14:37

@devpro Может ли это быть из-за того, что на исходной странице есть другие данные, которые захватываются json_decode, что не позволяет их преобразовать? Может ли это быть из-за CURL?

ACDC 14.03.2019 14:37

Это очень вероятно, что

RiggsFolly 14.03.2019 14:38
curl_reset($curl); curl_close($curl); переместите их наконец
devpro 14.03.2019 14:38

Было бы полезно увидеть ТОЧНО, что возвращается из этого вызова CURL. Очевидно, что в ответе есть что-то еще, поскольку то, что вы показываете, отлично работает.

RiggsFolly 14.03.2019 14:38
{"user-data":{"user":"hello-com-01","client":"43cb6a1a17a15f‌​2fdc641e935ea1c9467f‌​5d742b107c6798d"}} это ответ CURL??
devpro 14.03.2019 14:39

@devpro, это ответ на завиток. Я не уверен, что это потому, что источник вызывает вывод через print_r($ouput);, а я фиксирую что-то еще.

ACDC 14.03.2019 14:52

значит, curl дает правильный ответ. curl_reset($curl); curl_close($curl); переместите эти две строки после строки json_deocde и отметьте chk

devpro 14.03.2019 14:55

@devpro - я ответил так же. Я подозреваю, что print_r($ouput); из источника возвращает что-то еще, кроме строки json.

ACDC 14.03.2019 15:00

Что случилось с вашим сообщением JSON ERROR

RiggsFolly 14.03.2019 15:05

Это говорит мне Syntax error

ACDC 14.03.2019 15:06

Тогда в ответе на завиток все еще есть что-то, что вы нам не показываете. Пожалуйста, сделайте echo $displayReturns; после curl_exec() и опубликуйте это к своему вопросу.

RiggsFolly 14.03.2019 15:13

@RiggsFolly без json_decode я получаю {"user-data":{"user":"hello-com-01","client":"43cb6a1a17a15f‌​2fdc641e935ea1c9467f‌​5d742b107c6798d"} с json_decode я ничего не получаю.

ACDC 14.03.2019 15:18

Вот и хватайся за соломинку. попробуйте сделать $displayReturns = trim($displayReturns);, прежде чем передать его json_decode

RiggsFolly 14.03.2019 15:19

var_dump также показывает длину содержимого переменной в байтах. Показанный вами JSON не содержит ничего за пределами нижнего диапазона ASCII, поэтому он должен составлять 98 байт практически в любой мыслимой кодировке. Итак, какую длину показал вам var_dump…?

04FS 14.03.2019 15:35

Так к чему мы тогда пришли?

RiggsFolly 14.03.2019 16:34

Я обрезал, но все равно ничего. Я думаю, что когда я делаю запрос cURL, он получает пробел с предыдущей страницы, что делает недействительным json_decode.

ACDC 14.03.2019 18:41
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
2
23
103
1

Ответы 1

Решено: в моем исходном файле было следующее:

echo '<pre>';
print_r $ouput;
echo '<pre>';

Как только я их удалил, все заработало нормально.

Другие вопросы по теме