2016-11-21 3 views
1
<?php 

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

print_r($data); 
?> 

Выход дал это {"EventTitle":"Game","EventBody":"body","EventDate":"20 November, 2016","EventType":"party"}json_decode возвращает JSON строка не массив

Json данных Размещенное:

{"EventTitle":"Game","EventBody":"body","EventDate":"20 November, 2016","EventType":"party"} 

Запись данных JSON в переменной и передавая его json_decode работы, но разместить то же самое из «php: // input» возвращает данные JSON вместо ассоциативного массива.

+0

Что делает 'var_dump ($ json)' print? – tkausl

+0

Да, оно печатает это значение 'string (107)" "{\" EventTitle \ ": \" Игра \ ", \" EventBody \ ": \" body \ ", \" EventDate \ ": \" 20 ноября , 2016 \ ", \" EventType \ ": \" party \ "}" "' –

+0

Что произойдет, если вы измените 'file_get_contents ('php: // input', true),' to 'file_get_contents ('php: // вход '); '? – bassxzero

ответ

2

Похоже, что @tkausl является правильным. JSON, который вы получаете, был дважды закодирован. Поскольку это двойное кодирование, временным решением было бы его двойное декодирование.

$data = json_decode(json_decode($json), true); 

Но реальное решение, чтобы выяснить, почему это так, чтобы начать с и исправить ее (если это твое, чтобы исправить).

Смежные вопросы