2016-08-04 23 views
0

Я пытаюсь реализовать анкеты с angularjs, поэтому у меня есть следующий массив ответов, мне нужно преобразовать этот массив объектов в формат json, как и следующий вывод. Так как я могу преобразовать массив объектов в формат json?Преобразование формата json в другой формат json от AngularJS

var response=[{"questiongroup":1,"question":1,"response":"response1"}, 
        {"questiongroup":1,"question":2,"response":"response2"}, 
        {"questiongroup":1,"question":3,"response":"response3"}, 
        {"questiongroup":1,"question":4,"response":"response4"}, 
        {"questiongroup":1,"question":5,"response":"response5"}, 
        {"questiongroup":2,"question":6,"response":"response6"}, 
        {"questiongroup":2,"question":7,"response":"response7"}, 
        {"questiongroup":2,"question":8,"response":"response8"}, 
        {"questiongroup":2,"question":9,"response":"response9"}, 
        {"questiongroup":2,"question":10,"response":"response10"}]; 

требуемый выход

{"questiongroups": [ 
         { 
         "questiongroup": 1, 
         "question": [ 
          { 
          "question": 1, 
          "response":"response1" 
          }, 
          { 
          "question": 2, 
          "response":"response2" 
          }, 
          { 
          "question": 3, 
          "response":"response3" 
          }, 
          { 
          "question": 4, 
          "response":"response4" 
           }, 
          { 
           "question": 5, 
           "response":"response5" 
          }] 
         }, 
         { 
          "questiongroup": 2, 
          "question": [ 
           { 
           "question": 6, 
           "response":"response6" 
           }, 
           { 
           "question": 7, 
           "response":"response7" 
           }, 
           { 
           "question": 8, 
           "response":"response8" 
           }, 
           { 
           "question": 9, 
           "response":"response9" 
            }, 
           { 
            "question": 10, 
            "response":"response10" 
           }] 
          } 
         ] 
        } 
+0

К сожалению, я был слишком поспешным в маркировке это как дубликат - кажется, что вы не спрашиваете, как преобразовать этот объект в JSON, вы спрашиваете, как переставить данных в другую структуру. –

+0

Да, он отличается, мне нужно изменить формат. –

+1

Вы что-то пробовали? Подобная мутация данных очень распространена. –

ответ

1

Самое быстрое решение, что пришло ко мне.

Уменьшает ответ на объект, когда вопросная группа является идентификатором массивов. Затем, чтобы вернуть, как вы хотите, сопоставил ключи для генерации массива и создал объект с помощью значения вопросов.

var response=[{"questiongroup":1,"question":1,"response":"response1"}, 
 
        {"questiongroup":1,"question":2,"response":"response2"}, 
 
        {"questiongroup":1,"question":3,"response":"response3"}, 
 
        {"questiongroup":1,"question":4,"response":"response4"}, 
 
        {"questiongroup":1,"question":5,"response":"response5"}, 
 
        {"questiongroup":2,"question":6,"response":"response6"}, 
 
        {"questiongroup":2,"question":7,"response":"response7"}, 
 
        {"questiongroup":2,"question":8,"response":"response8"}, 
 
        {"questiongroup":2,"question":9,"response":"response9"}, 
 
        {"questiongroup":2,"question":10,"response":"response10"}]; 
 

 
var questiongroups = response.reduce(function(groups, question){ 
 
    var group = groups[question.questiongroup] || []; 
 
    group.push({ 
 
    question: question.question, 
 
    response: question.response 
 
    }); 
 

 
    groups[question.questiongroup] = group; 
 
    
 
    return groups; 
 
}, {}); 
 

 
questiongroups = Object.keys(questiongroups).map(function (key) {return {questiongroup: key, question: questiongroups[key]}}); 
 

 
var object = { 
 
    questiongroups: questiongroups 
 
}; 
 

 
console.log(object);

+0

Спасибо tpsilva, что именно то, что я хочу. –

0

var response=[{"questiongroup":1,"question":1,"response":"response1"}, 
 
        {"questiongroup":1,"question":2,"response":"response2"}, 
 
        {"questiongroup":1,"question":3,"response":"response3"}, 
 
        {"questiongroup":1,"question":4,"response":"response4"}, 
 
        {"questiongroup":1,"question":5,"response":"response5"}, 
 
        {"questiongroup":2,"question":6,"response":"response6"}, 
 
        {"questiongroup":2,"question":7,"response":"response7"}, 
 
        {"questiongroup":2,"question":8,"response":"response8"}, 
 
        {"questiongroup":2,"question":9,"response":"response9"}, 
 
        {"questiongroup":2,"question":10,"response":"response10"}]; 
 

 
var result = { 
 
\t "questiongroups": [], 
 
} 
 

 
var group = { 
 
\t "questiongroup": 1, 
 
    "question": [] 
 
} 
 

 
for (var i in response) { 
 

 
\t if (response[i].questiongroup != group.questiongroup) { 
 
    \t result.questiongroups.push(group); 
 
    group = { 
 
    "questiongroup" : response[i].questiongroup, 
 
    \t "question": [] 
 
    }; 
 
    } 
 
    
 
    var entry = { 
 
    "question" : { 
 
     "question" : response[i].question, 
 
     "response" : response[i].response 
 
    } 
 
    } 
 
    
 
    group.question.push(entry); 
 
} 
 

 
result.questiongroups.push(group); 
 

 
console.log(result);

+0

Спасибо Danny за ваши усилия –

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