3

この場合、マルチレベルの JSON はどのように設定されますか?

var quiz = {};

for(var i = 0; i < questions.length; i++) {     
quiz['Questions'] = {
    Question: Question,
    Answers: Answers,
    Correct: Correct
    };
    };

json_quizModule = JSON.stringify({QuizModule: quiz }, null, "\t");
alert(json_quizModule)

これで、すべてが「質問」パラメーターの下にあります。しかし、私はJSONのこの構造を達成しようとしています:

{
"QuizModule": {
    "Questions": {
        "Question": "Write your question here" 
                                 { "Answers": "sds" 
                                          { "Correct": false
                                          }
                                 }
    }

}
}

私はJSONにまったく慣れていません.複数の質問がある場合に備えて、「質問」という名前のパラメーターもいくつかありますか?

ここで助けてくれて本当にありがとう!

アップデート:

Jクエリ:

    var quiz = {};

    var quiz = {
    Questions: []
    };

    for(var i = 0; i < questions.length; i++) {
    var q = questions[i];
    var answers = q.getAnswers()
    quiz.Questions.push({
    Question: q.getQuestion()
    });

    for(var n = 0; n < answers.length; n++){

    var quiz = {
    Answers: []
    };

    quiz.Questions.Answers.push({       
        Answers: answers[n].getAnswer(),
        Correct: answers[n].getCorrect()
     });

     } 
    }
4

2 に答える 2

2

quiz['Questions'] = { ... }Questionsループの反復ごとに新しいオブジェクトに置き換えられます。それを配列にしてから、オブジェクトをそこにプッシュする必要があります。

var quiz = {
    Questions: []
};

for(var i = 0; i < questions.length; i++) {
    quiz.Questions.push({
        Question: Question,
        Answers: Answers,
        Correct: Correct
    });
}

編集:var quiz = {Answers: []};。これにより、変数全体 が再作成されます。quizあなたはそれをしたくありません。新しい配列を作成し、それを埋めてから、現在の質問に追加します。

var quiz = {
    Questions: []
};

for(var i = 0; i < questions.length; i++) {
    var q = questions[i];
    var answers = q.getAnswers();
    var AnswersArray = []; // Add this array

    for(var n = 0; n < answers.length; n++){
        // Fill the new array
        AnswersArray.push({       
            Answers: answers[n].getAnswer(),
            Correct: answers[n].getCorrect()
        });
    } 

    // Push everything into the main array
    quiz.Questions.push({
        Question: q.getQuestion(),
        Answers: AnswersArray
    });
}
于 2013-05-23T17:20:00.263 に答える