Тип Приведение декодированного объекта Json к массиву, генерирование ошибки при доступе к нему - PullRequest
0 голосов
/ 27 марта 2011

Я расшифровал строку json, а затем Type поместил ее в любой массив и попытался получить к ней доступ позже. Но это генерирует Undefined Index Ошибка

Вот мой пример кода

$json = '{"1":"Active","0":"Inactive"}'; //Yes, it is a valid Json String
$decodedObject = json_decode($json);
$array = (array)$decodedObject;
echo $array['1']; // This generates undefinded Index 1 Error

Вот отображение массива и объекта

stdClass Object
(
    [1] => Active
    [0] => Inactive
)

Array
(
    [1] => Active
    [0] => Inactive
)

Ответы [ 2 ]

1 голос
/ 27 марта 2011

1.) Вместо того, чтобы сделать это в два этапа, как это сделать:

$decodedArray = json_decode($json, true);

это даст вам массив вместо объекта

2.) Убедитесь, что ваш код JSON правильный:

{"1":"Active","0":"Inactive"}

3.) Ваш var_dump показывает, что array{[1]=>...., поэтому зачем ссылаться на него, как $array['1'], может быть еще проще $array[1]

1 голос
/ 27 марта 2011

Нет, это недопустимая строка JSON ( JSONLint - ваш друг).Вы использовали запятую вместо двоеточия:

{"1":"Active","0","Inactive"} // invalid
{"1":"Active","0":"Inactive"} // valid
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...