2016-08-04 4 views
0

Ich versuche, einen Fragebogen mit angularjs zu implementieren, also habe ich die folgende Antwort-Array, muss ich dieses Objekt-Array in JSON-Format wie die folgende Ausgabe konvertieren, So wie kann ich konvertieren Objekt-Array in JSON-Format?Konvertieren von Json-Format in ein anderes Json-Format von 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"}]; 

gewünschter Ausgang

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

Leider war ich zu voreilig in dieser Kennzeichnung als Duplikat - es scheint, dass Sie nicht zu fragen, wie dieses Ziel zu JSON konvertieren, Sie zu fragen, wie die neu zu ordnen Daten in eine andere Struktur. –

+0

ja, es unterscheidet Ich muss das Format ändern. –

+1

Haben Sie etwas versucht? Datenmutationen wie diese sind sehr häufig. –

Antwort

1

Die schnellste Lösung, die zu mir kam.

Reduziert die Antwort auf ein Objekt, bei dem die Fragengruppe die IDs der Arrays ist. Um dann wie gewünscht zurückzugeben, wurden die Schlüssel zum Generieren des Arrays zugeordnet und das Objekt mit dem Wert der Fragengruppe erstellt.

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

Danke tpsilva, das ist genau das, was ich will. –

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

Danke Danny für deine Mühe –