So extrahieren Sie ein JSON-Objekt, das sich in einem JSON-Objekt befindet

7

Konvertiere das:

%Vor%

Dazu:

{"BLE89-A0-123-384": "3", "BLE10-A0-123-321": "4"} das ist ... {id: menge}

Ich habe eine Antwort gefunden, die fast das tut, was ich brauche: Suche nach einem Objekt in der JSON . Aber diese Antwort hilft mir nicht, weil es nur auf der ersten Ebene ist (ein JSON-Objekt). Mein Problem ist auf der zweiten Ebene (Json-Objekt innerhalb eines JSON-Objekts). Vielen Dank im Voraus!

    
mrmo123 28.04.2012, 22:37
quelle

3 Antworten

23

Es hilft, wenn Sie JSON-Objekte nicht als JSON-Objekte betrachten. Sobald Sie eine JSON-Zeichenfolge über JSON.parse ausführen, handelt es sich um ein systemeigenes JavaScript-Objekt.

In JavaScript gibt es zwei Möglichkeiten, auf Objekte zuzugreifen.

Punktnotation

Die Punktnotation geht so

myObject.name

Sehen Sie den Punkt? Sie können das verwenden, um auf eine beliebige Objekt -Eigenschaft zuzugreifen (was in der Tat ein anderes Objekt in JavaScript sein kann, solange es einen gültigen Punktnotationsnamen hat). Sie können keine Zeichen wie - , . und das Leerzeichen verwenden.

Klammernotation (kann ein anderer Name sein)

myObject["variableName"]

Wie Punktnotation aber erlaubt einige andere Zeichen, wie - und das Leerzeichen .. Genau dasselbe.

Die Verwendung dieser Notationen ist nützlich, da wir auf geschachtelte Eigenschaften zugreifen können.

myObj.foo.bar.baz()

Kommen wir nun zu Ihrem JSON-Objekt ...

{"items":[{"id":"BLE89-A0-123-384","weight":"100","quantity":3,"stock":0},
{"id":"BLE10-A0-123-321","weight":"100","quantity":4,"stock":0}],

Vielleicht möchten Sie das JSON-Format selbst auffrischen, aber in Ihrem Beispiel sind hier ein paar Hinweise ...

{ Bezeichnet den Start eines Objekts. (Beachten Sie, dass Ihre gesamte JSON-Zeichenfolge selbst ein Objekt ist.)

} Bedeutet das Ende eines Objekts.

"variable" (mit Anführungszeichen! wichtig in JSON, aber nicht beim Zugriff / Deklarieren von JavaScript-Objekten) weist Ihrem Objekt eine Eigenschaft zu.

: Ist der Zuweisungsoperator in JSON- und JavaScript-Objekten. Alles auf der rechten Seite von : ist der Wert, den Sie der Eigenschaft auf der linken Seite zuweisen.

, Bedeutet, dass Sie eine neue Eigenschaft innerhalb eines Objekts starten.

Sie wissen wahrscheinlich, dass [] mit , Kommas im Inneren ein Array bedeutet.

Wenn wir Ihre Zeichenfolge durch JSON.parse(string) laufen lassen, erhalten wir ein Objekt, das so aussieht ...

var myResponse = JSON.parse(response);

Sie können es jetzt als natives JavaScript-Objekt verwenden. Was Sie suchen, ist eine verschachtelte Eigenschaft innerhalb von "Elementen".

var items = myResponse.items; //alternatively you could just use myResponse.items

Da items ein Array von Objekten ist, müssen wir es durchlaufen, um das existierende Objekt in ein neues Objekt umzuwandeln.

%Vor%

Ergebnis ist jetzt ein Objekt, das wie folgt aussieht:

%Vor%

Sie können auf die Eigenschaften mithilfe der Klammernotation zugreifen.

var BLE89 = result["BLE10-A0-123-321"]; //use quotes, otherwise JavaScript will try to look up the value of a variable.

    
Stanley Stuart 28.04.2012, 22:55
quelle
2

Sie können versuchen mit:

%Vor%

quantities ist dann das Objekt {"BLE89-A0-123-384":3,"BLE10-A0-123-321":4} . forEach ist eine native Methode für Array-Objekte in JavaScript, mit der Sie iterieren können Elemente. Sie können diesen Code in eine Funktion einfügen:

%Vor%     
epidemian 28.04.2012 23:04
quelle
0

Sie müssen Folgendes tun:

%Vor%     
ControlAltDel 28.04.2012 22:52
quelle

Tags und Links