【问题标题】:Create JSON with multilevel创建多级 JSON
【发布时间】:2013-05-23 17:15:16
【问题描述】:

这种情况下多级 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()
     });

     } 
    }

【问题讨论】:

    标签: jquery json for-loop


    【解决方案1】:

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

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

    【讨论】:

      【解决方案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
          });
      }
      

      【讨论】:

      • 谢谢!工作得很好!但是我如何将“答案”推送到“问题”参数中?如果您有时间再给我一个提示,我对上面的问题进行了更新,代码不起作用? :)
      • @Kim: 好了。试试看! :-)
      • 啊!杰出的!你刚刚为我节省了很多时间!谢谢你的时间!真的很喜欢:)
      猜你喜欢
      • 2012-03-20
      • 1970-01-01
      • 1970-01-01
      • 2018-06-08
      • 1970-01-01
      • 1970-01-01
      • 2015-12-13
      • 2013-04-14
      • 2012-10-17
      相关资源
      最近更新 更多