Es hilft, wenn Sie nicht von JSON als JSON-Objekt denken Sie. 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
den Punkt sehen? Sie können das verwenden, um auf ein beliebiges Objekt zuzugreifen Eigenschaft (die tatsächlich ein anderes Objekt in Javascript sein kann, solange es einen gültigen Punktnotationenname hat). Sie können keine Zeichen wie -
, .
und das Leerzeichen verwenden.
Bracket Notation (kann ein anderer Name sein)
myObject["variableName"]
Wie Punkt-Notation erlaubt aber einige andere Charaktere, wie -
und das Leerzeichen .. Ist genau das Gleiche.
Die Verwendung dieser Notationen ist nützlich, da wir auf verschachtelte Eigenschaften zugreifen können.
myObj.foo.bar.baz()
Lassen Sie uns jetzt auf Ihre JSON-Objekt bekommen ...
{"items":[{"id":"BLE89-A0-123-384","weight":"100","quantity":3,"stock":0},
{"id":"BLE10-A0-123-321","weight":"100","quantity":4,"stock":0}],
Sie könnten sich auf der JSON format auffrischen wollen, aber in Ihrem Beispiel, hier ein paar Hinweise .. .
{
Bedeutet den Start eines Objekts. (Denken Sie daran, dass Ihre gesamte JSON-Zeichenfolge ein Objekt selbst 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 der :
ist der Wert, den Sie der Eigenschaft auf der linken Seite zuweisen.
,
Bedeutet, dass Sie eine neue Eigenschaft innerhalb eines Objekts beginnen.
Sie wissen wahrscheinlich, dass []
mit ,
Kommas innerhalb bedeutet ein Array.
Wenn wir Ihre Schnur durch JSON.parse(string)
ausführen, werden wir ein Objekt erhalten, die so aussieht ...
var myResponse = JSON.parse(response);
Sie können nun als native JavaScript-Objekt verwenden. Was Sie suchen, ist eine geschachtelte Eigenschaft innerhalb von "Elementen".
var items = myResponse.items; //alternatively you could just use myResponse.items
Da items
ist ein Array von Objekten, müssen wir durch sie, um iterieren das bestehende Objekt in ein neues Objekt zu konvertieren.
var i;
var result = {} ; //declare a new object.
for (i = 0; i < items.length; i++) {
var objectInResponse = items[i]; //get current object
var id = objectInResponse.id; //extract the id.
var quantity = objectInResponse.quantity;
result[id] = quantity; //use bracket notation to assign "BLE89-A0-123-384"
//instead of id. Bracket notation allows you to use the value
// of a variable for the property name.
Ergebnis ist nun ein Objekt, das wie folgt aussieht: kann
{
"BLE89-A0-123-384" : 3, //additional properties designated by comma
"BLE10-A0-123-321" : 4 // The last key/value in an object literal CANNOT
// have a comma after it!
}
Sie die Eigenschaften Notation Klammer zuzugreifen.
var BLE89 = result["BLE10-A0-123-321"]; //use quotes, otherwise JavaScript will try to look up the value of a variable.
'{" BLE89-A0-123-384 "," 3 "; "BLE10-A0-123-321", "4"} 'Das ist nicht einmal ein gültiges Objekt, es muss ein Schlüsselwertpaar sein. –
Entschuldigung, repariere es! – mrmo123
Was * weißt * du nicht? Wissen Sie, wie Sie auf ein Mitglied eines Arrays oder Objekts zugreifen? Weißt du, wie man ein Array iteriert? Wissen Sie, wie Sie ein Objekt erstellen und ihm neue Schlüssel/Wert-Paare zuweisen? Es wäre gut zu wissen, wofür Sie Hilfe benötigen. –