2013-04-14 5 views
2

У меня есть объект JSON, который я отправляю на PHP-скрипт, и у меня возникают проблемы с разбором JSON. Вот запрос POST:Как разобрать объект JSON в PHP?

http://mywebsite.com?action=somefunction&{%22id%22:1,%22Name%22:%22Mike%22} 

И вот моя PHP функция, которая, очевидно, не работает:

$data = $_GET['data']; 
$obj = json_decode($data); 
echo $obj->Name; 
die(); 

Конечной целью является, чтобы извлечь имя «Майк» из строки URL. Какие-либо предложения?

+0

Делают var_dump на $ OBJ. – Daniel

+1

Ваша строка запроса неверна. Нет данных 'data ='. – Esailija

+0

Вы правы. Что это должно быть? – kaleazy

ответ

5

Попробуйте взглянуть на то, что PHP выводит из json_decode():

$data = $_GET['data']; 
$obj = json_decode($data); 
var_dump($obj); 

Ваш сам код работает отлично : http://ideone.com/0jsjgT

Но в строке запроса отсутствует значение data= перед фактическим JSON. Это:

http://mywebsite.com?action=somefunction&{%22id%22:1,%22Name%22:%22Mike%22} 

должен быть таким:

http://mywebsite.com?action=somefunction&data={%22id%22:1,%22Name%22:%22Mike%22} 
+0

не плохо! ...... – hek2mgl

+0

Ах, ты прав! Но даже с данными, указанными в URL-адресе, почему это не работает? $ data = $ _GET ['data']; $ obj = json_decode ($ data); – kaleazy

+0

Вам нужно использовать '$ data = urldecode ($ _ GET ['data']);' – maiorano84

1

вы должны сделать

echo $obj->{'Name'}; 

Это также является дубликатом вопрос Echo data json by json_decode

+1

В чем разница, чтобы называть его без '{}' ?? – hek2mgl

+0

Правильно ли это использовать $ _GET ['data']? – kaleazy

+0

'$ obj-> Name' и' $ obj -> {'Name'} 'эквивалентны в этом случае; этот ответ бесполезен. – Amber

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