2013-05-23 7 views
3

Как устроен многоуровневый JSON в этом случае?Создать 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

quiz['Questions'] = { ... } заменит Questions с новым объектом каждой итерации цикла. Вы должны сделать это массив, а затем вставить в него объекты.

var quiz = { 
    Questions: [] 
}; 

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

EDIT: 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 
    }); 
} 
+0

Спасибо! Хорошо работает! Но как я подталкиваю «Ответы» к параметру «Вопросы»? Я сделал обновление моего вопроса выше, с кодом, который не работает, если вы успели дать мне еще один намек на это? :) – Kim

+0

@Kim: Там вы идете. Попробуй это! :-) –

+0

Ах! Brilliant! Ты просто спас мне много времени! И спасибо за ваше время! Действительно appriciate :) – Kim

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 
    }); 
}; 
+0

Спасибо за хорошее объяснение! – Kim

Смежные вопросы