У меня есть массив 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);
var_dump($displayReturns) проверьте, что у вас получилось, и поделитесь результатом.
Вы проверили на ошибки echo json_last_error_msg()
@ pr1nc3 - без докода json это выглядело бы как {"user-data":{"user":"hello-com-01","client":"43cb6a1a17a15f2fdc641e935ea1c9467f5d742b107c6798d"}}
я пробовал и все работает нормально json_decode('{"user-data":{"user":"hello-com-01","client":"43cb6a1a17a15f2fdc641e935ea1c9467f5d742b107c6798d"}}',true)
@RiggsFolly Это говорит мне Syntax error
Тогда ваш JSON по какой-то причине неправильно сформирован
@devpro Может ли это быть из-за того, что на исходной странице есть другие данные, которые захватываются json_decode, что не позволяет их преобразовать? Может ли это быть из-за CURL?
Это очень вероятно, что
curl_reset($curl); curl_close($curl); переместите их наконец
Было бы полезно увидеть ТОЧНО, что возвращается из этого вызова CURL. Очевидно, что в ответе есть что-то еще, поскольку то, что вы показываете, отлично работает.
{"user-data":{"user":"hello-com-01","client":"43cb6a1a17a15f2fdc641e935ea1c9467f5d742b107c6798d"}} это ответ CURL??
@devpro, это ответ на завиток. Я не уверен, что это потому, что источник вызывает вывод через print_r($ouput);, а я фиксирую что-то еще.
значит, curl дает правильный ответ. curl_reset($curl); curl_close($curl); переместите эти две строки после строки json_deocde и отметьте chk
@devpro - я ответил так же. Я подозреваю, что print_r($ouput); из источника возвращает что-то еще, кроме строки json.
Что случилось с вашим сообщением JSON ERROR
Это говорит мне Syntax error
Тогда в ответе на завиток все еще есть что-то, что вы нам не показываете. Пожалуйста, сделайте echo $displayReturns; после curl_exec() и опубликуйте это к своему вопросу.
@RiggsFolly без json_decode я получаю {"user-data":{"user":"hello-com-01","client":"43cb6a1a17a15f2fdc641e935ea1c9467f5d742b107c6798d"} с json_decode я ничего не получаю.
Вот и хватайся за соломинку. попробуйте сделать $displayReturns = trim($displayReturns);, прежде чем передать его json_decode
var_dump также показывает длину содержимого переменной в байтах. Показанный вами JSON не содержит ничего за пределами нижнего диапазона ASCII, поэтому он должен составлять 98 байт практически в любой мыслимой кодировке. Итак, какую длину показал вам var_dump…?
Так к чему мы тогда пришли?
Я обрезал, но все равно ничего. Я думаю, что когда я делаю запрос cURL, он получает пробел с предыдущей страницы, что делает недействительным json_decode.






Решено: в моем исходном файле было следующее:
echo '<pre>';
print_r $ouput;
echo '<pre>';
Как только я их удалил, все заработало нормально.
Можете ли вы отправить нам вывод json?