564 Stimmen

Was ist JSON und wofür wird es verwendet?

Ich habe bei Wikipedia nachgeschaut, gegoogelt und die offizielle Dokumentation gelesen, aber ich bin immer noch nicht so weit, dass ich wirklich verstehe, was JSON ist und warum ich es verwenden sollte.

Ich baue seit einiger Zeit Anwendungen mit PHP, MySQL und JavaScript/HTML, und wenn JSON etwas tun kann, um mein Leben einfacher oder meinen Code oder meine Benutzeroberfläche besser zu machen, dann würde ich das gerne wissen. Kann mir jemand eine knappe Erklärung geben?

674voto

Andreas Grech Punkte 102197

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

JSON Object diagram

JSON Array diagram

JSON Value diagram

JSON String diagram

JSON Number diagram

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

79voto

BenKoshy Punkte 29349

Das Konzept erklärt - kein Code oder Fachchinesisch

Was ist JSON? - Wie ich es meiner Frau erklärt habe TM

Ich: "Es ist im Grunde eine Art, mit jemandem schriftlich zu kommunizieren ...., aber mit sehr spezifischen Regeln.

Ehefrau: yeah....?

Ich: Prosaisch ausgedrückt, sind die Regeln ziemlich locker: genau wie bei Käfigkämpfen. Nicht so bei JSON. Es gibt viele Möglichkeiten, etwas zu beschreiben:

- Beispiel 1: Unsere Familie besteht aus 4 Personen: Du, ich und 2 Kinder.

- Beispiel 2: Unsere Familie: du, ich, Kind1 und Kind2.

- Beispiel 3: Familie: [ du, ich, Kind1, Kind2]

- Beispiel 4: Wir haben 4 Personen in unserer Familie: Mutter, Vater, Kind1 und Kind2.

Ehefrau: Warum verwenden sie nicht einfach einfaches Englisch?

Ich: Sie würden es tun, aber wir haben es hier mit Computern zu tun. Ein Computer ist dumm und wird nicht in der Lage sein, Sätze zu verstehen. Wir müssen also sehr genau sein, wenn es um Computer geht, sonst kommen sie durcheinander. Außerdem ist JSON eine ziemlich effiziente Art der Kommunikation, so dass das meiste Unwichtige weggelassen wird, was ziemlich praktisch ist. Wenn man einem Computer unsere Familie mitteilen wollte, könnte man das zum Beispiel so machen:

{
    "Family": ["Me", "Wife", "Kid1", "Kid2"] 
}

und das ist im Grunde JSON. Aber denken Sie daran, Sie MÜSSEN die JSON-Grammatikregeln befolgen. Wenn Sie gegen diese Regeln verstoßen, kann ein Computer das Geschriebene einfach nicht verstehen (d. h. parsen).

Ehefrau: Wie schreibe ich also in Json?

Ein guter Weg wäre die Verwendung eines json serialiser - eine Bibliothek, die die Arbeit für Sie erledigt.

Zusammenfassung

JSON ist im Grunde eine Möglichkeit, Daten an jemanden zu übermitteln, mit sehr, sehr spezifischen Regeln. Verwendung von Schlüssel-Wert-Paaren und Arrays. An dieser Stelle lohnt es sich, die oben genannten spezifischen Regeln zu lesen.

48voto

Vilx- Punkte 100739

Kurz gesagt - JSON ist eine Art der Serialisierung, so dass es zu JavaScript-Code wird. Bei der Ausführung (mit eval oder anderweitig) erstellt dieser Code ein JavaScript-Objekt, das die von Ihnen serialisierten Daten enthält, und gibt es zurück. Dies ist möglich, weil JavaScript die folgende Syntax erlaubt:

var MyArray = [ 1, 2, 3, 4]; // MyArray is now an array with 4 elements
var MyObject = {
    'StringProperty' : 'Value',
    'IntProperty' : 12,
    'ArrayProperty' : [ 1, 2, 3],
    'ObjectProperty' : { 'SubObjectProperty': 'SomeValue' }
}; // MyObject is now an object with property values set.

Sie können dies für verschiedene Zwecke nutzen. Zum einen ist es eine bequeme Möglichkeit, Daten von Ihrem Server-Backend an Ihren JavaScript-Code zu übergeben. Daher wird dies häufig in AJAX verwendet.

Sie können es auch als eigenständigen Serialisierungsmechanismus verwenden, der einfacher ist und weniger Platz als XML beansprucht. Es gibt viele Bibliotheken, mit denen Sie Objekte in JSON für verschiedene Programmiersprachen serialisieren und deserialisieren können.

31voto

mson Punkte 7684

Kurz gesagt handelt es sich um eine Skriptnotation für die Weitergabe von Daten. In gewisser Weise eine Alternative zu XML, die von Haus aus grundlegende Datentypen, Arrays und assoziative Arrays (Name-Wert-Paare, die Objekte genannt werden, weil sie genau das darstellen) unterstützt.

Die Syntax entspricht der von JavaScript, und JSON selbst steht für "JavaScript Object Notation". Sie ist jedoch portabel geworden und wird auch in anderen Sprachen verwendet.

Ein nützlicher Link für Details ist hier zu finden:

http://secretgeek.net/json_3mins.asp

19voto

Pinakin Nayi Punkte 191

Das JSON-Format wird häufig zur Serialisierung und Übertragung strukturierter Daten über eine Netzwerkverbindung verwendet. Es wird hauptsächlich für die Übertragung von Daten zwischen einem Server und einer Webanwendung verwendet und dient als Alternative zu XML.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X