简体   繁体   English

AngularJS将json格式转换为另一种json格式

[英]Convert json format to another json format by AngularJS

I'm trying to implement a questionnaire with angularjs,So I have the following response array ,I need to convert this object array to json format like the following output, So How can I convert object array to json format? 我正在尝试使用angularjs实施问卷,所以我有以下响应数组,我需要将此对象数组转换为json格式,如以下输出所示,那么如何将对象数组转换为json格式?

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

desired output 期望的输出

   {"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"
                                 }]
                             }
                         ]
                    }

The fastest solution that came to me. 我想到的最快的解决方案。

Reduces the response to a object with the questiongroup being the ids of the arrays. 以问题组为数组的ID减少对对象的响应。 Then, to return as you want, mapped the keys to generate the array and created the object with the questiongroups value. 然后,要返回所需结果,请映射键以生成数组,并使用questiongroups值创建对象。

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

 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 = { "questiongroups": [], } var group = { "questiongroup": 1, "question": [] } for (var i in response) { if (response[i].questiongroup != group.questiongroup) { result.questiongroups.push(group); group = { "questiongroup" : response[i].questiongroup, "question": [] }; } var entry = { "question" : { "question" : response[i].question, "response" : response[i].response } } group.question.push(entry); } result.questiongroups.push(group); console.log(result); 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM