2016-11-02 5 views
3

Я следующие коды в моем контроллере:Как декодировать JSON в Yii 1

public function actionCabinet($id){ 

    $this->render('cabinet', array('model'=>$this->loadJson($id))); 

} 

    public function loadJson($id) 
    { 

     $jsonfile=ChForms::model()->findByPk($id, array("select"=>"json")); 
     $decodedJson=json_decode($jsonfile, true); 
     return $decodedJson; 

    } 

Данные сохраняются в JSon поле в ChForm в формате JSON. Я собираюсь преобразовать его в массив. Когда я запускаю это приложение, появляется следующее сообщение об ошибке:

json_decode() expects parameter 1 to be string, object given 

Как исправить эту ошибку?

+0

что выход 'var_dump ($ jsonfile);', это действительный 'JSON'? –

+0

Да, это так. var_dump ($ jsonfile) действителен – phpdev

ответ

1

Пожалуйста, попробуйте это,

public function loadJson($id) 
{ 

    $jsonfile=ChForms::model()->findByPk($id); 
    $decodedJson=json_decode($jsonfile->json, true); 
    return $decodedJson; 

} 
0

Вы можете использовать json_encode, как показано ниже,

public function loadJson($id) 
{ 

    $jsonfile=ChForms::model()->findByPk($id, array("select"=>"json")); 
    $decodedJson=json_encode($jsonfile, true); 
    return $decodedJson; 

} 
+0

json_encode используется для преобразования массива в формат json. – Arya