在这种情况下如何设置多级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的新手,如果有多个问题,还有几个参数名称“问题”吗?
非常感谢这里的一些帮助!
更新
Jquery的:
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()
});
}
}
答案 0 :(得分:3)
要拥有多个问题部分,您需要以下结构
"QuizModule": {
"Questions": [
"Question": "Write your question here" {
"Answers": "sds" {
"Correct": false
}
},
"Question": "Write your question here" {
"Answers": "sds" {
"Correct": false
}]
}
}
注意[而不是{。 [用于表示数组
可以使用像
这样的推送方法来实现for (var i = 0; i < questions.length; i++) {
quiz['Questions'].push({
Question: Question,
Answers: Answers,
Correct: Correct
});
};
答案 1 :(得分: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
});
}