Страницы

Поиск по вопросам

понедельник, 30 марта 2020 г.

Почему json_decode на данном объекте может не работать?

#php #json


Ниже представлен HTTP-запрос. Мне нужно извлечь из него данные - массив с ключами
cells и distance. 

 curl http://localhost:80/problem2.php -X POST -H Content-Type:application/json --data-binary
"{'cells': [4,8,11,18,19], 'distance': 2}"


Но ничего не выходит, так как данные считываются не верно. Ниже - считывание данных. 

$data = json_decode(file_get_contents('php://input'));


Известно, что file_get_contents('php://input') точно получает данный массив. Почему
json_decode() может не рабоать?
    


Ответы

Ответ 1



JSON строго регламентирует использование двойных кавычек: --data-binary '{"cells": [4,8,11,18,19], "distance": 2}' var_dump(json_decode('{"cells": [4,8,11,18,19], "distance": 2}')); Fiddle

Ответ 2



Но ничего не выходит, так как данные считываются не верно. Ниже - считывание данных. $data = json_decode(file_get_contents('php://input')); При условии, что у вас есть файл problem2.php и сервер слушает на localhost:80, а не на 8080 или другом порте. json_decode возвращает объект типа stdClass, обращатся к нему надо print_r($data->cells); Выхлоп: Array ( [0] => 4 [1] => 8 [2] => 11 [3] => 18 [4] => 19 )

Комментариев нет:

Отправить комментарий