2016-08-04 181 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爲您付出的努力 –