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

186
17 сентября 2018, 12:00

Ниже представлен 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() может не рабоать?

Answer 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

Answer 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
)
READ ALSO
Создание асинхронных задач

Создание асинхронных задач

Ни разу не работал с асинхронностью в PHPПо большей части оно и не надо, но у меня такая задача: юзер жмет кнопочку, делается запрос который...

187
Установка drush 8.*

Установка drush 8.*

Пытаюсь установить drush глобальноПосле команды: Получаю сообщение следующего содержания: После этого ничего не происходит, подскажите...

168
Вопрос на счёт функций

Вопрос на счёт функций

Хочу написать скрипт, который будет работать с базой данныхНо у меня возникли проблемы с реализацией функций

186
WordPress не понимает <?php

WordPress не понимает <?php

Возникла следующая проблема

202