使用multilevel创建JSON

时间:2013-05-23 17:15:17

标签: jquery json for-loop

在这种情况下如何设置多级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()
     });

     } 
    }

2 个答案:

答案 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
    });
}