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 很陌生,如果有多个问题,是否也可以有几个参数名称“问题”?

真的很感谢这里的一些帮助!

更新:

查询:

    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

3

要拥有多个问题部分,您需要以下结构

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

    },
        "Question": "Write your question here" {
        "Answers": "sds" {
            "Correct": false
        }]

    }
}

注意 [ 而不是 { 。[ 用于表示数组

可以使用 push 方法来实现,例如

for (var i = 0; i < questions.length; i++) {
    quiz['Questions'].push({
        Question: Question,
        Answers: Answers,
        Correct: Correct
    });
};
于 2013-05-23T17:21:12.153 回答
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 回答