2014-10-14 3 views
0

Я получаю следующий результат из базы данных:как декодировать объект JSON с помощью PHP

stdClass Object ([risk_challenge] => ["dfsgdfgdgdf","dfgdfgdfg","dfgdfgdfgdf"]) 

Когда я попытался расшифровать его с помощью следующей функции:

$result = json_decode($result,true); 

Я получил эту ошибку:

Message: json_decode() expects parameter 1 to be string, object given 
+0

сначала проверьте свой json. Действительно ли это? –

+0

Если это объект, вы уже декодировали его. Экземпляр 'stdClass' - это добросовестный PHP-объект, который вы можете повторить более или напрямую обращаться к своим членам ('$ obj-> risk_challenge [0]', например) –

+0

Вы получили свой ответ в своем сообщении об ошибке. Вам нужно получить строку из результата базы данных, чтобы декодировать ее, и вы даете объект он вместо строки. –

ответ

0

Я думаю, что вы хотите кодировать в json, он уже декодирован

использование json_encode для кодирования

1

Что у вас есть действительный объект, нет ничего JSON об этом, это экземпляр класса PHP ядра stdClass. Если вы хотите использовать его (например, получить список значений risk_challenge), просто напишите:

foreach ($obj->risk_challenge as $value) 
    echo ' *> ', $value, PHP_EOL; 

Работа выполнена.
Если вы хотите, чтобы преобразовать объект в ассоциативный массив, у вас есть 2 варианта:

$array = (array) $object;//a simple cast 
$array = json_decode(//decode with assoc argument = true 
    json_encode(// but first encode it 
     $object 
    ), true); 

Почему вы используете вторую версию вместо броска? simple: Листинг неглубокий (если какое-либо из свойств/ключей содержит другой объект, то он будет не быть отличным в ассоциативный массив, но он останется объектом. json_decode действительно работает рекурсивно. В вашем случае, однако, я 'd stick to the cast.

+0

как вызвать bootstrap modal в функции контроллера codeigniter – kalavathi

+0

@kalavathi: Это другой квест все вместе, и, возможно, тот, который уже был задан (или ответ на который легко найти в руководстве). –