user1722857
user1722857

Reputation: 867

How to get json output in required format

I am working in yii. I have controller function as-

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))."] }";
        }
    }
}

So i am retriving two questions from database such a way that last entry of table is currently displayed question and second last entry is previouly displayed question. i want to publish answer of previously displayed question also. I am sending this information in json encoded format. i want output in format=

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

But when i am using same variable in CJSON::encode(array("question"=>$currentQuestion1->question,"answer"=>$true,"question"=>$currentQuestion->question))."] }";},its giving only one quetion if we use same variable in encoded cjson array. So how to get required output.

Upvotes: 0

Views: 483

Answers (1)

ernie
ernie

Reputation: 6356

As the output you want has two JSON objects (i.e. two items in curly braces), the data structure you pass to CJSON::encode needs to be an array of objects or arrays, i.e.:

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

Upvotes: 3

Related Questions