JSON (JavaScript Object Notation) ist ein leichtgewichtiges Format, das für den Austausch von Daten verwendet wird. Sie basiert auf einer Teilmenge der JavaScript-Sprache (die Art und Weise, wie Objekte in JavaScript aufgebaut sind). Als im MDN angegeben Einige JavaScript sind nicht JSON, und einige JSON sind nicht JavaScript.
Ein Beispiel hierfür sind Antworten auf Webdienste. In den "alten" Zeiten verwendeten Webdienste XML als primäres Datenformat für die Rückübertragung von Daten, aber seit dem Erscheinen von JSON ( Das JSON-Format ist in RFC 4627 von Douglas Crockford ), ist es das bevorzugte Format, weil es viel einfacher ist Leichtgewicht
Viele weitere Informationen finden Sie auf der offiziellen JSON-Website .
JSON ist auf zwei Strukturen aufgebaut:
- Eine Sammlung von Name/Wert-Paaren. In verschiedenen Sprachen wird dies als Objekt, Datensatz, Struktur, Wörterbuch, Hashtabelle, verschlüsselte Liste 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 Zeichenkette!
Oft wird angenommen, dass alle Javascript-Objekte JSON sind und dass JSON ein Javascript-Objekt ist. Das ist falsch.
In Javascript var x = {x:y}
es nicht JSON ist dies ein Javascript-Objekt . Die beiden sind nicht dasselbe. Das JSON-Äquivalent (dargestellt in der Javascript-Sprache) würde lauten var x = '{"x":"y"}'
. x
ist ein Objekt des Typs String kein eigenständiges Objekt. Um es in ein vollwertiges Javascript-Objekt zu verwandeln, müssen Sie es zunächst analysieren, var x = JSON.parse('{"x":"y"}');
, x
ist jetzt ein Objekt, aber es ist nicht mehr JSON.
Voir Javascript-Objekt vs. JSON
Wenn Sie mit JSON und JavaScript arbeiten, könnten Sie versucht sein, die eval
Funktion zu verwenden, um das im Callback zurückgegebene Ergebnis auszuwerten. Dies wird jedoch nicht empfohlen, da es zwei Zeichen (U+2028 & U+2029) gibt, die in JSON, aber nicht in JavaScript gültig sind (lesen Sie mehr dazu aquí ).
Daher muss man immer versuchen, das Skript von Crockford zu verwenden, das vor der Auswertung auf ein gültiges JSON prüft. Den Link zur Erklärung des Skripts finden Sie unter aquí und hier ist ein direkte Verbindung in der js-Datei. Jeder größere Browser hat heutzutage seine eigene Umsetzung für diese.
Beispiel für die Verwendung des JSON-Parsers (mit dem json aus dem obigen Codeschnipsel):
//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 noch eine weitere sehr nützliche Methode, stringify
. Diese Methode nimmt ein JavaScript-Objekt als Parameter entgegen und gibt eine Zeichenkette im JSON-Format zurück. Dies ist nützlich, wenn Sie Daten an den Server zurücksenden:
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 beiden oben genannten Methoden ( parse
et stringify
) nehmen auch einen zweiten Parameter an, der eine Funktion ist, die für jeden Schlüssel und jeden Wert auf jeder Ebene des Endergebnisses aufgerufen wird, und jeder Wert wird durch das Ergebnis der von Ihnen eingegebenen Funktion ersetzt. (Mehr zu diesem aquí )
Übrigens, für alle, die denken, JSON sei nur etwas für JavaScript, sollten Sie sich diese Stelle die das Gegenteil erklärt und bestätigt.
Referenzen