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

Convert json format to another json format by AngularJS

本文关键字:格式 json 另一种 转换 AngularJS 通过      更新时间:2023-09-26

我正在尝试用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"}];

期望输出

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

我想到的最快的解决方案。

减少对对象的响应,其中问题组是数组的id。然后,为了根据需要返回,映射键以生成数组,并使用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);