2012-06-19 11 views
0

J'ai un fichier JSON généré que je voudrais transformer. Existe-t-il un moyen facile de transformer la forme "id"/"value" de ce JSON en un objet JSON clé/valeur correct, sans utiliser de frameworks?Transformer un fichier JSON?

 
These lines: 

    "value":"chrome", 
    "id":"foo" 

would convert to: 

    "foo": "chrome" 

Entrée JSON:

 
{"row":[ 
    { 
     "column":[ 
      { 
       "value":"chrome", 
       "id":"foo" 
      }, 
      { 
       "value":0, 
       "id":"bar" 
      }, 
      { 
       "value":"baz1", 
       "id":"baz" 
      }, 
      { 
       "value":0, 
       "id":"legacy" 
      } 
     ] 
    }, 
    { 
     "column":[ 
      { 
       "value":"firefox", 
       "id":"foo" 
      }, 
      { 
       "value":0, 
       "id":"bar" 
      }, 
      { 
       "value":"baz2", 
       "id":"baz" 
      }, 
      { 
       "value":0, 
       "id":"legacy" 
      } 
     ] 
    } 
] 
} 

JSON désiré:

 
{"row":[ 

    { 
     "foo":"chrome", 
     "bar":0, 
     "baz":"baz1", 
     "legacy":0 
    }, 
    { 
     "foo":"firefox", 
     "bar":0, 
     "baz":"baz2", 
     "legacy":0 
    } 
] 
} 
+0

Non, il n'y a pas. Il n'y a que le "dur" - écrire le code. –

+1

Cela peut être fait sans n'importe quel cadre en traversant simplement l'objet (analysé par le JSON) et changez la structure en conséquence. Que cela soit considéré comme facile ou non est subjectif. Je pense que c'est assez simple. –

Répondre

0

Voici la solution:

var result = {"row": []} 

for (var i = 0; i < input["row"].length; i++) { 
    var object = {}; 
    var column = input["row"][i]["column"]; 

    for (var j = 0; j < column.length; j++) { 
    object[column[j]["id"]] = column[j]["value"]; 
    } 

    result.row.push(object); 
} 

console.log(result); 
variable d'entrée

fait référence à votre premier objet JSON.

var input = {"row":[ 
    { 
     "column":[ 
    ... 
0

How to create json by javascript for loop?

bigrement questions similaires, en supposant ne pas besoin du code exact que le motif/allusion.

+0

Un indice est bon. Je ne savais pas s'il y avait une astuce dans JS. –

0

ici est ma fonction, je tapais dehors allready avant Ioseb a posté sa réponse alors je me suis afficherons aussi bien, il est linted et tout

function transform(data) { 
    "use strict"; 
    var x, i, row, column, colNumb, out = {rows : []}, rownum = data.row.length; 
    for (x = 0; x < rownum; x += 1) { 
     row = {}; 
     column = data.row[x].column; 
     colNumb = column.length; 
     for (i = 0; i < colNumb; i += 1) { 
      row[column[i].id] = column[i].value; 
     } 
     out.rows.push(row); 
    } 
    return out; 
} 
Questions connexes