2016-04-27 18 views
1

ich eine API, die dieses Array oder ein Objekt in JSON zurückgibtJQuery Parsing Mehrdimensionale Arrays mit Subarrays

{"orderHead":["51817","frode","","","els"], 
"orderLines":[{"VareNr":"07,1437","Produkt":"Black Glue","Antall":"6","Pris":"239","Rabatt":"0%"},{"VareNr":"07,1435","Produkt":"Grey Glue","Antall":"8","Pris":"239","Rabatt":"0%"}], 
"orderSum":[{"doc":"26042016_4.oln","knr":"51817","firma":"Tolga Co","oldV":1,"oldS":2868,"newV":0,"newS":0,"newSc":2}]} 

Soweit ich drei Hauptsäulen gibt es sagen kann:

  • orderHead
  • orderLines
  • orderSum

Jede enthält ein eigenes Sub-Array. Problem ist, dass ich keine Daten davon abrufen kann, ohne oder ohne $ .parseJSON();

Ich habe versucht $ .grep und $ .Each.

Muss ich mehrere "Werkzeuge" kombinieren, um von diesem Objekt/Array zu lesen? Sorry für die sehr, sehr Noob Frage :)

Antwort

1

Sie die JSON mit dem JSON.parse Methode analysieren kann

Angesichts der folgenden JSON

{ 
    "orderHead": [ 
     "51817", 
     "frode", 
     "", 
     "", 
     "els" 
    ], 
    "orderLines": [ 
     { 
      "VareNr": "07,1437", 
      "Produkt": "Black Glue", 
      "Antall": "6", 
      "Pris": "239", 
      "Rabatt": "0%" 
     }, 
     { 
      "VareNr": "07,1435", 
      "Produkt": "Grey Glue", 
      "Antall": "8", 
      "Pris": "239", 
      "Rabatt": "0%" 
     } 
    ], 
    "orderSum": [ 
     { 
      "doc": "26042016_4.oln", 
      "knr": "51817", 
      "firma": "Tolga Co", 
      "oldV": 1, 
      "oldS": 2868, 
      "newV": 0, 
      "newS": 0, 
      "newSc": 2 
     } 
    ] 
} 

Sie die Werte wie so zugreifen können:

var json = '{"orderHead":["51817","frode","","","els"],\ 
"orderLines":[{"VareNr":"07,1437","Produkt":"Black\ Glue","Antall":"6","Pris":"239","Rabatt":"0%"},{"VareNr":"07,1435","Produkt":"Grey\ Glue","Antall":"8","Pris":"239","Rabatt":"0%"}],\ 
"orderSum":[{"doc":"26042016_4.oln","knr":"51817","firma":"Tolga\ Co","oldV":1,"oldS":2868,"newV":0,"newS":0,"newSc":2}]}'; 

var parsed = JSON.parse(json); 

console.log(parsed.orderHead); 

for (line of parsed.orderLines) { 
    console.log(line.VareNr, line.Produkt, line.Pris); 
} 

Rückgabe:

[ "51817", "frode", "", "", "els"]
07,1437 Schwarz Kleber 239
07,1435 Grau Kleber 239

Sie können auch Zugriff auf/iterate über das Ergebnis wie folgt:

Schwarz Kleber
VM132:

// read order sum values 
console.log(parsed.orderSum[0].doc, parsed.orderSum[0].knr, parsed.orderSum[0].firma); 

// iterate over the order lines 
for(line in parsed.orderLines) { 
    console.log(parsed.orderLines[line].Produkt); 
} 

Welche liefert 60 Grau Kleber

+0

Vielen Dank, es funktioniert. Mein Editor gibt mir jedoch einen Syntaxfehler, wenn ich for (line of parsed.orderLines) {...} verwende. Gibt es andere Befehle, die die gleichen Ergebnisse liefern? – XanderMan

+0

Ja, es gibt zahlreiche Möglichkeiten, die Daten zu durchlaufen. Ich füge ein anderes Beispiel hinzu. – mezmi

+1

Nochmals vielen Dank für Ihre großartige Hilfe. Ich habe es schließlich mit $ .Each auch arbeiten lassen :) – XanderMan