如何以所需格式获取json输出

时间:2012-12-31 13:08:27

标签: yii json

我在yii工作。我有控制器功能 -

public function actiongetPublicQuestion()
{
    $model=new Qbquestion();
    $new = Yii::app()->db->createCommand()->select('max(tranId)')->from('qbpublicuserquestion')->queryScalar();
    $CurrentQuestionId=Qbpublicuserquestion::model()->findByPk($new);
    $currentQuestion=Qbquestion::model()->findByPk($CurrentQuestionId->questionId);
    echo "Currently displayed question is=".$currentQuestion->question."</Br>";
//  $answer=Qbquestionoption::model()->findAllByAttributes(array('questionId'=>$currentQuestion1->questionId));



    $old = Yii::app()->db->createCommand()->select('max(tranId-1)')->from('qbpublicuserquestion')->queryScalar();
    $PreviousQuestionId=Qbpublicuserquestion::model()->findByPk($old);
    $currentQuestion1=Qbquestion::model()->findByPk($PreviousQuestionId->questionId);
    echo "previously displayed question is=".$currentQuestion1->question;
    $answer=Qbquestionoption::model()->findAllByAttributes(array('questionId'=>$currentQuestion1->questionId));

    foreach($answer as $ans)
    {
    //  var_dump($ans);

        if($ans->isAnswer==1)
        {
            echo "</br>"."correct Answer is=".$ans->option."with optionId=".$ans->optionId;
            $true=$ans->option;
            echo "</br>";
            echo "{'questions':[".CJSON::encode(array("question"=>$currentQuestion1->question,"answer"=>$true,"question1"=>$currentQuestion->question))."] }";
        }
    }
}

所以我正在从数据库中搜索两个问题,这样表格的最后一个条目当前显示问题,而最后一个条目是先前显示的问题。我想发布以前显示的问题的答案。 我以json编码格式发送此信息。 我希望输出格式=

"Questions": [
    {"question": "Who is the prime minister of india?","answer":"Manmohan sinh"},
    {"question": "2 when who will win the test?"},
]

但是当我在CJSON中使用相同的变量:: encode(array(“question”=&gt; $ currentQuestion1-&gt; question,“answer”=&gt; $ true,“question”=&gt; $ currentQuestion-&gt ;问题))。“]}”;},如果我们在编码的cjson数组中使用相同的变量,它只给出一个队列。那么如何获得所需的输出。

1 个答案:

答案 0 :(得分:3)

由于你想要的输出有两个JSON对象(即花括号中的两个项目),你传递给CJSON :: encode的数据结构需要是一个对象或数组的数组,即:

CJSON::encode(array(array("question"=>$currentQuestion1->question,"answer"=>$true), 
                    array("question"=>$currentQuestion->question),
                    )
            );