2016-06-01 31 views
-1

Ich muss ein paar externe JSON-Daten in eine Variable oder in eine einzige JSON-Datei importieren, um diese Daten dann mit D3 anzuzeigen. Wie übersetze ich ein JavaScript-Objekt in ein neues Objekt?

Dies ist das Format der Daten, die ich von jedem JSON-Datei importieren müssen:

{ 
     "name": "name1", 
     "version": "0.1.2", 

     "references": [ 
     { 
      "url1": "http://example1.com" 
     }, 
     { 
      "url2": "http://example2.com" 
     } 
     ] 
    } 

Und das ist das Format der Daten, die ich für die endgültige JSON-Datei/Variable benötigen.

{ 
     "nodes":[ 
     { 
      "name": "name1", 
      "version": "0.1.2", 
      "references": [ 
      { 
       "url1": "http://example1.com" 
      }, 
      { 
       "url2": "http://example2.com"" 
      } 
      ] 
     }, 

     { 
      "name": "name2", 
      "version": "1.6.0", 
      "references": [ 
      { 
       "url1": "http://example34.com" 
      }, 
      { 
       "url2": "http://example30.com"" 
      } 
      ] 
     }, 
     { 
      ... 
      ... 
     } 
     ], 
     "links":[ 
     ] 
    } 

Grundsätzlich muss ich die Daten aus den verschiedenen JSON-Dateien innerhalb der "Nodes" -Array zusammenführen.

Irgendeine Idee, wie könnte ich das tun? Danke

+2

Ich denke nicht, dass es dieses Thema dupliziert, ich denke, wonach er eigentlich fragt, ist, wie er mehrere JSON-Dateien zusammenführen kann zu einem...? – chrisv

+0

Nicht genau ein Duplikat ... das OP-Problem ist hier anders. –

+0

Ihr Recht, kein Betrogener. Soooo ... Was hast du probiert? Etwas? Wie x zu y übersetzt wird ist auch nicht klar – Liam

Antwort

2

nodes ist ein einfaches Array, so können Sie einfach die 'Datei' Objekte in das nodes Array schieben.

var file1 = { 
 
    "name": "name1", 
 
    "version": "0.1.2", 
 
    "references": [ 
 
     { 
 
      "url1": "http://example1.com" 
 
     }, 
 
     { 
 
      "url2": "http://example2.com" 
 
     } 
 
    ] 
 
} 
 

 
var file2 = { 
 
    "name": "name1", 
 
    "version": "0.1.2", 
 
    "references": [ 
 
     { 
 
      "url1": "http://example1.com" 
 
     }, 
 
     { 
 
      "url2": "http://example2.com" 
 
     } 
 
    ] 
 
} 
 

 
var files = [file1, file2]; 
 

 
var node = { 
 
    "nodes": [], 
 
    "links": [] 
 
} 
 

 
files.forEach(function(file) { 
 
    node.nodes.push(file); 
 
}) 
 

 
console.log(node);

+0

Danke Marc! Ich denke, das sollte für mich funktionieren! Ich werde es jetzt versuchen. – faia20

+0

Es hat funktioniert! Vielen Dank Marc! – faia20

+0

@ faia20 Glad. Yw. –

0

Wenn Sie einfach alle Daten aus der importierten JSON in nodes schieben, dann können Sie dies tun:

var imported = { 
    "name": "name1", 
    "version": "0.1.2", 
    "references": [ 
     { 
      "url1": "http://example1.com" 
     }, 
     { 
      "url2": "http://example2.com" 
     } 
    ] 
}; 

var finalJson = { 
    nodes: [] 
}; 

finalJson.nodes.push(imported); 

Hier ist die Geige: https://jsfiddle.net/vj1nqeu5/1/

Verwandte Themen