JSON (JavaScript Object Notation) ist ein leichtes Format, das für den Datenaustausch verwendet wird. Es basiert auf einer Teilmenge der JavaScript-Sprache (die Art und Weise, wie Objekte in JavaScript erstellt werden). Wie im MDN angegeben , ist ein Teil von JavaScript kein JSON und ein Teil von JSON kein JavaScript.
Ein Beispiel dafür, wo dies verwendet wird, sind Webdienstantworten. Früher verwendeten Webdienste XML als primäres Datenformat für die Rückübertragung von Daten. Seit dem Erscheinen von JSON ( das JSON-Format wird in RFC 4627 von Douglas Crockford angegeben ) war es das bevorzugte Format, da es viel mehr ist Leicht
Weitere Informationen finden Sie auf der offiziellen JSON-Website .
JSON basiert auf zwei Strukturen:
- Eine Sammlung von Name / Wert-Paaren. In verschiedenen Sprachen wird dies als Objekt, Datensatz, Struktur, Wörterbuch, Hash-Tabelle, Schlüsselliste oder assoziatives Array realisiert.
- Eine geordnete Liste von Werten. In den meisten Sprachen wird dies als Array, Vektor, Liste oder Sequenz realisiert.
JSON-Struktur
Hier ist ein Beispiel für JSON-Daten:
{
"firstName": "John",
"lastName": "Smith",
"address": {
"streetAddress": "21 2nd Street",
"city": "New York",
"state": "NY",
"postalCode": 10021
},
"phoneNumbers": [
"212 555-1234",
"646 555-4567"
]
}
JSON in JavaScript
JSON (in Javascript) ist eine Zeichenfolge!
Die Leute nehmen oft an, dass alle Javascript-Objekte JSON sind und dass JSON ein Javascript-Objekt ist. Das ist falsch.
In Javascript var x = {x:y}
ist nicht JSON , dies ist ein Javascript-Objekt . Die beiden sind nicht dasselbe. Das JSON-Äquivalent (dargestellt in der Javascript-Sprache) wäre var x = '{"x":"y"}'
. x
ist ein Objekt vom Typ string und kein eigenständiges Objekt. So schalten Sie diese in ein vollwertiges Javascript - Objekt müssen Sie es zunächst analysieren, var x = JSON.parse('{"x":"y"}');
, x
ist jetzt ein Objekt , aber das ist nicht JSON mehr.
Siehe Javascript-Objekt gegen JSON
Wenn Sie mit JSON und JavaScript arbeiten, könnten Sie versucht sein, die eval
Funktion zum Auswerten des im Rückruf zurückgegebenen Ergebnisses zu verwenden. Dies wird jedoch nicht empfohlen, da in JSON zwei Zeichen (U + 2028 & U + 2029) gültig sind, in JavaScript jedoch nicht (lesen Sie mehr von dieser hier ).
Daher muss immer versucht werden, das Crockford-Skript zu verwenden, das nach einem gültigen JSON sucht, bevor es ausgewertet wird. Link auf die Skript Erklärung gefunden werden hier und hier ist ein direkter Link auf die JS - Datei. Jeder große Browser hat heutzutage seine eigene Implementierung dafür.
Beispiel für die Verwendung des JSON-Parsers (mit dem json aus dem obigen Codefragment):
//The callback function that will be executed once data is received from the server
var callback = function (result) {
var johnny = JSON.parse(result);
//Now, the variable 'johnny' is an object that contains all of the properties
//from the above code snippet (the json example)
alert(johnny.firstName + ' ' + johnny.lastName); //Will alert 'John Smith'
};
Der JSON-Parser bietet auch eine andere sehr nützliche Methode stringify
. Diese Methode akzeptiert ein JavaScript-Objekt als Parameter und gibt eine Zeichenfolge im JSON-Format zurück. Dies ist nützlich, wenn Sie Daten an den Server zurücksenden möchten :
var anObject = {name: "Andreas", surname : "Grech", age : 20};
var jsonFormat = JSON.stringify(anObject);
//The above method will output this: {"name":"Andreas","surname":"Grech","age":20}
Die obigen beiden Methoden ( parse
und stringify
) verwenden auch einen zweiten Parameter, eine Funktion, die für jeden Schlüssel und Wert auf jeder Ebene des Endergebnisses aufgerufen wird und bei der jeder Wert durch das Ergebnis Ihrer eingegebenen Funktion ersetzt wird. (Mehr dazu hier )
Übrigens, für alle da draußen, die glauben, JSON sei nur für JavaScript gedacht, lesen Sie diesen Beitrag , der etwas anderes erklärt und bestätigt.
Verweise