Почему я не могу заставить PHP показать мне один элемент json - PullRequest
2 голосов
/ 12 ноября 2010

Боже, эта штука JSON жует в мой день.Это должно быть трудно?Возможно нет.Итак, я получаю URL с набором данных json.

Это выглядит так:

jsonval={%22Fname%22:+%22kjhjhkjhk%22,+%22Lname%22:+%22ghghfhg%22,+%22conf[]%22:+[%22ConfB%22,+%22ConfA2%22],+%22quote%22:+%22meat%22,+%22education%22:+%22person%22,+%22edu%22:+%22welding%22,+%22Fname2%22:+%22%22,+%22Lname2%22:+%22%22,+%22gender%22:+%22B2%22,+%22quote2%22:+%22Enter+your+meal+preference%22,+%22education2%22:+%22person2%22,+%22edu2%22:+%22weld2%22,+%22jsonval%22:+%22%22}

И когда я запускаю на нем json_decode в PHP, это выглядит так:

object(stdClass)#1 (13) { ["Fname"]=> string(9) "kjhjhkjhk" ["Lname"]=> string(7) "ghghfhg" ["conf[]"]=> array(2) { [0]=> string(5) "ConfB" [1]=> string(6) "ConfA2" } ["quote"]=> string(4) "meat" ["education"]=> string(6) "person" ["edu"]=> string(7) "welding" ["Fname2"]=> string(0) "" ["Lname2"]=> string(0) "" ["gender"]=> string(2) "B2" ["quote2"]=> string(26) "Enter your meal preference" ["education2"]=> string(7) "person2" ["edu2"]=> string(5) "weld2" ["jsonval"]=> string(0) "" } 

Наверное, я должен упомянуть об этомбыл закодирован как сериализованный объект со страницы формы, а затем закодирован и отправлен ... Не знаю, будет ли это иметь значение.

В любом случае, я покорно проверяю руководство по PHP и все, как всегдавыглядит достаточно просто для реализации.А потом, конечно, я пробую именно так, как они говорят мне, и я скучаю по чему-то, что, вероятно, очевидно всем здесь, кроме меня.Этот фрагмент кода не возвращает ничего, кроме моего текста, который я повторяю:

<?php
$json = $_GET['jsonval'];
$obj = var_dump(json_decode($json));

echo "<br><br>ELEMENT PLEASE!" . $obj;
print $obj->{"Fname"}; // 12345

?>

Я имею в виду, все, что я хочу, это увидеть значения моего индивидуального ключа / значений и распечатать их.Что я тут не так сделал?

Спасибо за любой совет.

Ответы [ 3 ]

2 голосов
/ 12 ноября 2010

Эта строка совершенно неверна:

$obj = var_dump(json_decode($json));

var_dump() ничего не возвращает

Вам нужно:

$obj = json_decode($json);

Включите display_errors on в php.ini и настройте ERROR_REPORTING = E_ALL. И продолжить разработку с такими настройками.

0 голосов
/ 12 ноября 2010

Я думаю, что вы не вызываете данные из объекта неправильно.

Должно быть что-то вроде:

$data = (json_decode(urldecode('{%22Fname%22:+%22kjhjhkjhk%22,+%22Lname%22:+%22ghghfhg%22,+%22conf[]%22:+[%22ConfB%22,+%22ConfA2%22],+%22quote%22:+%22meat%22,+%22education%22:+%22person%22,+%22edu%22:+%22welding%22,+%22Fname2%22:+%22%22,+%22Lname2%22:+%22%22,+%22gender%22:+%22B2%22,+%22quote2%22:+%22Enter+your+meal+preference%22,+%22education2%22:+%22person2%22,+%22edu2%22:+%22weld2%22,+%22jsonval%22:+%22%22}')));
echo $data->Fname;
0 голосов
/ 12 ноября 2010

Вы положили это: print $obj->{"Fname"}; // 12345

Это должно быть print $obj->Fname; // 12345

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...