2016-08-04 179 views
0

我想用angularjs来实现问卷,所以我有下面的响应数组,我需要将这个对象数组转换为json格式,就像下面的输出那样,我怎样才能将对象数组转换为json格式?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" 
           }] 
          } 
         ] 
        } 
+0

对不起,我是在这个标记为重复的太仓促 - 看来,你不问如何到这个对象到JSON转换,你问如何重新安排数据转换成不同的结构。 –

+0

是的,它不同我需要更改格式。 –

+1

你尝试过什么吗?像这样的数据突变非常普遍。 –

回答

1

是来找我最快的解决方案。

以问题组为数组的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);

+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为您付出的努力 –