1

私はextjs + yiiで働いています。サーバー側の設計は yii フレームワークで、クライアント側の設計は extjs です。今、extjs から出力データを json 形式で取得しています。

{"data":[{"optionId":"","questionId":"1","isAnswer":"","option":"Aus","media":"","keyword":"","mediaTypeId":"","id":null},{"optionId":"","questionId":"2","isAnswer":"","option":"india","media":"","keyword":"","mediaTypeId":"","id":null},{"optionId":"","questionId":"3","isAnswer":"","option":"England","media":"","keyword":"","mediaTypeId":"","id":null},{"optionId":"","questionId":"4","isAnswer":"","option":"Srilanka","media":"","keyword":"","mediaTypeId":"","id":null}]}

では、Yii フレームワークでこの json フィールドにアクセスする方法は? このjsonのquestionIdとoptionIdフィールドにアクセスしたいです。だから誰か助けてくれませんか

4

1 に答える 1

1

を使用してjsonをデコードしてからCJSON::decode、フィールドにアクセスする必要があります。

$var='{"data":[{"optionId":"","questionId":"1","isAnswer":"","option":"Aus","media":"","keyword":"","mediaTypeId":"","id":null},{"optionId":"","questionId":"2","isAnswer":"","option":"india","media":"","keyword":"","mediaTypeId":"","id":null},{"optionId":"","questionId":"3","isAnswer":"","option":"England","media":"","keyword":"","mediaTypeId":"","id":null},{"optionId":"","questionId":"4","isAnswer":"","option":"Srilanka","media":"","keyword":"","mediaTypeId":"","id":null}]}';
$decoded=CJSON::decode($var);
// now your json is stored in $decoded as an array, so you can access as follows:
echo $decoded["data"][0]["questionId"];
echo $decoded["data"][0]["optionId"];
// to loop over the elements use foreach
foreach ($decoded["data"] as $value){
    echo $value["questionId"];
    echo $value["optionId"];
}

ネイティブが利用できない場合でも、CJSON :: decodeはjson文字列をデコードできるため、ネイティブにCJSON::decode依存するよりも使用する方が適切です。また、場合によっては正しいjson文字列を返すことがあります。phpjsonライブラリの比較についてはこちらをお読みください。json_decodejson_decodenull

于 2013-01-30T07:24:59.937 に答える