2014-02-13 3 views
2

У меня есть два объекта json с аналогичным ключом question.concate два объекта json того же ключа

var data = {"question":[{ 
    QuestionID : counter1, 
QuestionText: question1, 
    Choices:[{ChoiceID:100,Choice:"Yes",NextQuestionID:counter}, 
      {ChoiceID:101,Choice:"No",NextQuestionID:counter}], 
AnswerType: answer_type 
}]}; 


var data1 = {"question":[{ 
    QuestionID : counter2, 
QuestionText: question2, 
    Choices:[{ChoiceID:103,Choice:"Yes",NextQuestionID:counter}, 
      {ChoiceID:105,Choice:"No",NextQuestionID:counter}], 
AnswerType: answer_type 
}]}; 

Я хочу concate их в один JSon объект с ключом «вопрос» и значение будет массив, как показано ниже

var final = {"question":[ 
{ 
    QuestionID : counter1, 
QuestionText: question1, 
    Choices:[{ChoiceID:100,Choice:"Yes",NextQuestionID:counter}, 
      {ChoiceID:101,Choice:"No",NextQuestionID:counter}], 
AnswerType: answer_type 
}, 
{ 
QuestionID : counter2, 
QuestionText: question2, 
    Choices:[{ChoiceID:103,Choice:"Yes",NextQuestionID:counter}, 
      {ChoiceID:105,Choice:"No",NextQuestionID:counter}], 
AnswerType: answer_type 
} 
]}; 

Я перепробовал много способов и ниже способ близко к месту назначения, но Creats массив данных и data1 объекта

var jsons = new Array(); 
jsons.push(data); 
jsons.push(data1); 

Моя проблема будет решить, если я могу concate question:Object и question:Array[2] где каждый индекс содержит объект. Конечный выход будет question:Array[3]

Любая помощь будет высоко оценена. Спасибо заранее.

+0

Это JavaScript, а не JSON. Кроме того, пожалуйста, опишите, что вы пробовали и что не работает. –

+1

Если это только эти два, и вам нужно {'question': [q1, q2]} просто выполните «var myObject = {'question': [data.question, data1.question]};' – algrebe

ответ

0

можно объединить с помощью JQuery

var final = $.merge(data, data1); 
0

Ну, ваш код на самом деле толкает два объекта в списке, таким образом у получить список объектов. В вашем случае первый элемент - это данные, а второй - data1. Таким образом, вы действительно не получите требуемый результат.

Так как вы хотите, чтобы объект попробовать это

/* assuming data and data1 are created and both have the key question */ 
var final = {'question': [data.question, data1.question] }; 

// or using the concat feature 
var final = data.question.concat(data1.question); 
+0

Я принимаю 10 вопросы от пользователя и, наконец, я хочу как 'question: Array [10]', где каждый индекс массива содержит каждый вопрос. Первый вариант работает отлично, пока не будет введен два вопроса 'question: Array [2]'. Но когда вопросы заняты более двух, он становится как 'question: Array [2]', где Array [0] содержит 'Array [2]' и Array [1] содержит вопрос 3 как формат объекта. –

2

Я решил эту проблему

var index = 0; // number of question 
$.each(previousData.question,function(){ 
      finalArray[index] = previousData.question[index]; //contain array 
      index++; //here index is number of question 
}); 

finalArray[index] = data.question; 
data = {'question': finalArray }; // convert array to object 
Смежные вопросы