Ich habe noch nie JSON verwendet, also bin ich mit der Syntax nicht vertraut.
Im Moment habe ich mehrere Arrays, die verschiedene Stücke von Daten enthalten.
Ich würde gerne ein JSON-Objekt erstellen, das mehrere Arrays mit jeweils mehreren Daten enthält.
Z.B..
Ein Objekt namens cars, das mehrere Arrays enthält, jedes für eine andere Automarke. In jedem Array wäre das Modell des Autos zusammen mit einigen anderen Arten von Daten z.B. Anzahl der Türen (doesn't wirklich wichtig sein nur ein fiktives Beispiel.)
Es wäre sehr hilfreich, wenn jemand die Syntax anhand eines Beispiels erklären könnte.
Auf der äußersten Ebene beginnt ein JSON-Objekt mit einem {
und endet mit einem }
.
Beispielhafte Daten:
{
"cars": {
"Nissan": [
{"model":"Sentra", "doors":4},
{"model":"Maxima", "doors":4},
{"model":"Skyline", "doors":2}
],
"Ford": [
{"model":"Taurus", "doors":4},
{"model":"Escort", "doors":4}
]
}
}
Wenn das JSON einer Variablen namens data zugewiesen wird, würde der Zugriff darauf wie folgt aussehen:
data.cars['Nissan'][0].model // Sentra
data.cars['Nissan'][1].model // Maxima
data.cars['Nissan'][2].doors // 2
for (var make in data.cars) {
for (var i = 0; i < data.cars[make].length; i++) {
var model = data.cars[make][i].model;
var doors = data.cars[make][i].doors;
alert(make + ', ' + model + ', ' + doors);
}
}
Ein anderer Ansatz (Verwendung eines assoziativen Arrays für Automodelle anstelle eines indizierten Arrays):
{
"cars": {
"Nissan": {
"Sentra": {"doors":4, "transmission":"automatic"},
"Maxima": {"doors":4, "transmission":"automatic"}
},
"Ford": {
"Taurus": {"doors":4, "transmission":"automatic"},
"Escort": {"doors":4, "transmission":"automatic"}
}
}
}
data.cars['Nissan']['Sentra'].doors // 4
data.cars['Nissan']['Maxima'].doors // 4
data.cars['Nissan']['Maxima'].transmission // automatic
for (var make in data.cars) {
for (var model in data.cars[make]) {
var doors = data.cars[make][model].doors;
alert(make + ', ' + model + ', ' + doors);
}
}
Bearbeiten:
Berichtigung: Ein JSON-Objekt beginnt mit {
und endet mit }
, aber es ist auch zulässig, ein JSON-Array (auf der äußersten Ebene) zu haben, das mit [
beginnt und mit ]
endet.
Außerdem wurden erhebliche Syntaxfehler in den ursprünglichen JSON-Daten korrigiert: Alle Schlüsselnamen in einem JSON-Objekt müssen in Anführungszeichen stehen, und alle String-Werte in einem JSON-Objekt oder einem JSON-Array müssen ebenfalls in Anführungszeichen stehen.
Siehe:
Ein gutes Buch I'm Lesung: Professional JavaScript für Web-Entwickler von Nicholas C. Zakas 3rd Edition hat die folgenden Informationen über JSON Syntax:
"JSON Syntax erlaubt die Darstellung von drei Arten von Werten".
In Bezug auf den Typ, an dem Sie interessiert sind, Arrays, heißt es:
"Arrays werden in JSON mit der Array-Literal-Notation von JavaScript dargestellt. Zum Beispiel ist dies ein Array in JavaScript:
var values = [25, "hi", true];
Sie können dasselbe Array in JSON mit einer ähnlichen Syntax darstellen:
[25, "hi", true]
Beachten Sie das Fehlen einer Variablen oder eines Semikolons. Arrays und Objekte können zusammen verwendet werden, um komplexere Datensammlungen darzustellen, wie zum Beispiel:
{
"books":
[
{
"title": "Professional JavaScript",
"authors": [
"Nicholas C. Zakas"
],
"edition": 3,
"year": 2011
},
{
"title": "Professional JavaScript",
"authors": [
"Nicholas C.Zakas"
],
"edition": 2,
"year": 2009
},
{
"title": "Professional Ajax",
"authors": [
"Nicholas C. Zakas",
"Jeremy McPeak",
"Joe Fawcett"
],
"edition": 2,
"year": 2008
}
]
}
Dieses Array enthält eine Reihe von Objekten, die Bücher darstellen. Jedes Objekt hat mehrere Schlüssel, von denen einer "authors" ist, der ein weiteres Array ist. Objekte und Arrays sind in der Regel die obersten Teile einer JSON-Datenstruktur (auch wenn dies nicht erforderlich ist) und können verwendet werden, um eine große Anzahl von Datenstrukturen zu erstellen."
Um ein JavaScript-Objekt in eine JSON-Zeichenkette zu serialisieren (konvertieren), können Sie die JSON-Objektmethode stringify() verwenden. Für das Beispiel von Mark Linus Antwort:
var cars = [{
color: 'gray',
model: '1',
nOfDoors: 4
},
{
color: 'yellow',
model: '2',
nOfDoors: 4
}];
cars ist jetzt ein JavaScript-Objekt. Um es in ein JSON-Objekt zu konvertieren, könnten Sie Folgendes tun:
var jsonCars = JSON.stringify(cars);
Das Ergebnis ist:
"[{"color":"gray","model":"1","nOfDoors":4},{"color":"yellow","model":"2","nOfDoors":4}]"
Um das Gegenteil zu tun, ein JSON-Objekt in ein JavaScript-Objekt umzuwandeln (dies wird Parsing genannt), würden Sie die Methode parse() verwenden. Suchen Sie nach diesen Begriffen, wenn Sie mehr Informationen benötigen... oder besorgen Sie sich das Buch, es enthält viele Beispiele.
var cars = [
manufacturer: [
{
color: 'gray',
model: '1',
nOfDoors: 4
},
{
color: 'yellow',
model: '2',
nOfDoors: 4
}
]
]