2016-04-08 7 views
-5

I die folgende Json Antwort erhalten:Wie analysiert man JSON-Antworten in eckigen Klammern?

"kind": "analytics#gaData", 
"id": "c", 
"rows": [ 
    [ 
     "/de/cart.aspx", 
     "0" 
    ], 
    [ 
     "/de/cart_details.aspx", 
     "0" 
    ], 
    [ 
     "/de/cart_login.aspx", 
     "0" 
    ], 
    [ 
     "/de/order_summary.aspx", 
     "0" 
    ], 
    [ 
     "/fr/cart.aspx", 
     "0" 
    ], 
    [ 
     "/fr/cart_details.aspx", 
     "0" 
    ], 
    [ 
     "/fr/cart_login.aspx", 
     "0" 
    ], 
    [ 
     "/fr/order_summary.aspx", 
     "0" 
    ], 
    [ 
     "/it/cart.aspx", 
     "0" 
    ], 
    [ 
     "/it/cart_details.aspx", 
     "0" 
    ], 
    [ 
     "/it/cart_login.aspx", 
     "0" 
    ], 
    [ 
     "/it/order_summary.aspx", 
     "0" 
    ] 
    ] 

In Javascript, wie kann ich durch diese Anordnung möglicherweise Schleife, um seine Daten abzurufen (?)?

Antwort

2

Genau so, als würden Sie ein anderes Array durchqueren. Anstatt ihre Eigenschaften unter Eigenschaftsnamen in einer Map zu speichern, werden die Objekte, die dieses Array bilden, einfach unter bestimmten Indizes in einem Array gespeichert.

theJsonObject.rows.forEach(function(row) { 
    var url = row[0]; 
    var n = row[1]; 
    do stuff with url and n... 
}); 

forEach könnte durch irgendetwas geeignet für den besonderen Umständen ersetzt werden. Zum Beispiel würden, wenn Sie es in eine Reihe von regelmäßigen Objekten mit dem Namen Eigenschaften zu verwandeln:

var withNamedProperties = theJsonObject.rows.map(function(row) { 
    return { 
     url:row[0], 
     n:row[1] 
    }; 
}); 
+0

Danke, nur eine Frage, mit dem ersten Methode erhalte ich die Fehlermeldung: Kann nicht Eigenschaft ‚Zeilen‘ gelesen von undefined (...), mein Json enthält auch 2 weitere Schlüssel, nicht nur "Zeilen", ist es damit verwandt? (Ich habe die JSON in meiner Antwort bearbeitet) – Signo

+0

Das bedeutet, dass die Variable, die ich 'theJsonObject' genannt habe, nicht den Wert enthält, den Sie uns zeigen, noch irgendeinen Wert. Es ist "undefiniert" und kann daher keine "Zeilen" -Eigenschaft enthalten. Im besten Fall hast du es irgendwo in deinem Code falsch geschrieben. Im schlimmsten Fall stimmt etwas mit dem Upstream-Datenfluss nicht. Da Sie ein Android/iOS-Typ zu sein scheinen, kann JS frustrierend für jemanden sein, der an statische Sprachen gewöhnt ist, da ein Rechtschreibfehler vor der Laufzeit unbemerkt bleiben kann. Sie fühlen sich besser, einen Linter wie jshint die ganze Zeit laufen zu lassen. :) –

+0

Ja ist es! : D danke für deine Vorschläge :) Btw es ist kein Tippfehler, ich denke, es gibt ein Problem mit meiner Json-Struktur, aber ich werde es irgendwie reparieren, danke nochmal :) – Signo

Verwandte Themen