it-swarm.com.de

Was ist JSON und warum sollte ich es verwenden?

Ich habe mir Wikipedia angesehen und es gegoogelt und die offizielle Dokumentation gelesen, aber ich bin immer noch nicht an dem Punkt angelangt, an dem ich wirklich verstehe, was JSON ist und warum ich es verwenden würde.

Ich erstelle seit einiger Zeit Anwendungen mit PHP, MySQL und Javascript/HTML. Wenn JSON mein Leben erleichtern oder meinen Code oder meine Benutzeroberfläche verbessern kann, würde ich gerne mehr darüber erfahren. Kann mir jemand eine kurze Erklärung geben?

518
Ben

JSON (JavaScript Object Notation) ist ein kompaktes Format, das für den Datenaustausch verwendet wird. Es basiert auf einer Teilmenge der JavaScript-Sprache (wie Objekte erstellt werden) in JavaScript). 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 Webservices XML als primäres Datenformat für die Rückübertragung von Daten. Seit dem Erscheinen von JSON ( wird das JSON-Format in RFC 4627 von Douglas angegeben Crockford ), es war das bevorzugte Format, weil es viel leichter ist

Weitere Informationen finden Sie auf der offiziellen JSON-Website .

JSON baut auf zwei Strukturen auf:

  • 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



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 ein String!

Die Leute nehmen oft an, dass alle Javascript-Objekte JSON sind und dass JSON ein Javascript-Objekt ist. Das ist falsch.

In Javascript ist var x = {x:y} kein 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. Um daraus ein vollwertiges Javascript-Objekt zu machen, müssen Sie es zuerst analysieren. var x = JSON.parse('{"x":"y"}');, x ist jetzt ein Objekt, aber dies ist kein JSON mehr.

Siehe Javascript-Objekt Vs JSON


Wenn Sie mit JSON und JavaScript arbeiten, könnten Sie versucht sein, die Funktion eval zu verwenden, um das im Rückruf zurückgegebene Ergebnis auszuwerten. Dies wird jedoch nicht empfohlen, da zwei Zeichen (U + 2028 & U + 2029) in gültig sind JSON aber nicht in JavaScript (mehr dazu hier ).

Daher muss immer versucht werden, Crockfords Skript zu verwenden, das nach einem gültigen JSON sucht, bevor es ausgewertet wird. Der Link zur Skript-Erklärung ist hier und hier ist ein direkter Link zur js-Datei. Heutzutage hat jeder große Browser seine eigene Implementierung dafür.

Beispiel zur Verwendung des JSON-Parsers (mit dem json aus dem obigen Code-Snippet):

//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}

Bei den beiden oben genannten Methoden (parse und stringify) wird auch ein zweiter Parameter verwendet. Hierbei handelt es sich um eine Funktion, die für jeden Schlüssel und Wert auf jeder Ebene des Endergebnisses aufgerufen wird. Jeder Wert wird ersetzt durch das Ergebnis Ihrer eingegebenen Funktion. (Mehr dazu hier )

Übrigens, für alle, die glauben, JSON sei nur für JavaScript, lesen Sie diesen Beitrag , der etwas anderes erklärt und bestätigt.


Verweise

629
Andreas Grech

Das erläuterte Konzept - kein Code oder Fachjargon

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

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

Frau: ja ....?

ME: Nehmen wir als Beispiel Englisch: Wir haben Regeln - Punkte, Kommas, Klammern, Bindestriche, Apostrophe usw. und alle bedeuten unterschiedliche Dinge. Grundsätzlich haben wir uns alle darauf geeinigt, was ein Punkt bedeutet (d. H. Wir sollten pausieren, wenn wir einen lesen).

Frau: Wollen Sie damit sagen, dass JSON eine Art ist, jemandem Englisch zu schreiben, aber es gibt Regeln, auf die sich beide Parteien einigen?

Ich: Genau! Ausgenommen, diese Regeln sind sehr spezifisch. Im prosaischen Englisch sind die Regeln ziemlich locker: Genau wie beim Käfigkampf: Sie können tun, was Sie wollen, außer ein paar Grundlagen (z. B. Augenrisse). Zum Beispiel, wenn ich dem IRS von unserer Familie erzählen wollte, könnte ich es mit prosaischem Englisch auf ein paar verschiedene Arten tun. Beachten Sie die Unterschiede in jeder Hinsicht:

Me:

• Beispiel 1: Unsere Familie hat 4 Personen: Sie, ich und 2 Kinder.

• Beispiel 2: Unsere Familie: Sie, ich, kid1 und kid2.

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

• Beispiel 4: Wir haben 4 Personen in unserer Familie: Mama, Papa, Kind1 und Kind2.

Frau: Ok Ich bekomme das Bild. Auf Englisch kann man dasselbe auf viele verschiedene Arten sagen. Sie können hier und da ein paar Wörter hinzufügen, hier und da ein paar Kommas, und jeder wird es noch verstehen.

Me: Genau. Mit Ausnahme von JSON sind die Regeln sehr restriktiv. Sie können nur auf eine bestimmte Weise kommunizieren. Und Sie müssen diese Regeln befolgen, damit jemand anderes sie versteht: Klammern, Kommas an bestimmten Stellen.

Frau: Warum verwenden sie nicht stattdessen nur einfaches Englisch?

Me: Sie würden, aber denken Sie daran, dass wir es mit Computern zu tun haben. Ein Computer ist dumm und kann Sätze nicht verstehen. Wir müssen also wirklich genau festlegen, wann Computer beteiligt sind, da sie sonst verwirrt werden. Darüber hinaus ist JSON eine ziemlich effiziente Art der Kommunikation, sodass die meisten irrelevanten Dinge herausgeschnitten werden, was eine schöne Handschrift ist. Wenn Sie unsere Familie mit einem Computer kommunizieren möchten, können Sie dies auf folgende Weise tun:

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

…… und das ist im Grunde JSON. Denken Sie jedoch daran, dass Sie die JSON-Grammatikregeln befolgen MÜSSEN. Wenn Sie gegen diese Regeln verstoßen, wird ein Computer einfach nicht verstehen (d. H. Analysieren), was Sie schreiben.

Frau: Wie schreibe ich in Json?

Me: Lesen Sie die obigen Antworten für Einzelheiten. Kurz gesagt, Sie sind gezwungen, Dinge mithilfe von Schlüssel-Wert-Paaren und Arrays zu kommunizieren.

Zusammenfassung

Bei JSON handelt es sich im Grunde genommen um eine Möglichkeit, Daten mit sehr spezifischen Regeln an jemanden zu übermitteln. Verwenden von Schlüsselwertpaaren und Arrays. Dies ist das erläuterte Konzept. Es lohnt sich an dieser Stelle, die oben genannten Regeln zu lesen.

54
BKSpurgeon

Kurz gesagt - JSON ist eine Art der Serialisierung, die zu JavaScript-Code wird. Bei der Ausführung (mit eval oder auf andere Weise) erstellt dieser Code ein JavaScript-Objekt und gibt es zurück, das die von Ihnen serialisierten Daten enthält. Dies ist verfügbar, da JavaScript die folgende Syntax zulässt:

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 verwenden. Zum einen ist es eine komfortable 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 beansprucht als XML. Es gibt viele Bibliotheken, mit denen Sie Objekte in JSON für verschiedene Programmiersprachen serialisieren und deserialisieren können.

48
Vilx-

Kurz gesagt, es ist eine Skriptnotation zum Weitergeben von Daten über. In gewisser Weise eine Alternative zu XML, die von Haus aus grundlegende Datentypen, Arrays und assoziative Arrays (Name-Wert-Paare, so genannte Objekte, weil sie genau das darstellen) unterstützt.

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

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

http://secretgeek.net/json_3mins.asp

31
mson

Das JSON-Format wird häufig zum Serialisieren und Übertragen von strukturierten Daten über eine Netzwerkverbindung verwendet. Es wird hauptsächlich zum Übertragen von Daten zwischen einem Server und einer Webanwendung verwendet und dient als Alternative zu XML.

19
Pinakin Nayi

JSON ist die JavaScript-Objektnotation. Im Vergleich zu XML ist dies eine viel kompaktere Methode zur Übertragung von Datensätzen über Netzwerkverbindungen. Ich schlage vor, JSON in allen AJAX-ähnlichen Anwendungen zu verwenden, in denen XML ansonsten die "empfohlene" Option wäre. Die Ausführlichkeit von XML erhöht die Downloadzeit und den Bandbreitenverbrauch ($$$). Sie können den gleichen Effekt mit JSON erzielen, und das Markup ist fast ausschließlich für die Daten selbst und nicht für die zugrunde liegende Struktur bestimmt.

16
Nolte

die allgemeine kurze Antwort lautet: Wenn Sie AJAX für Datenanforderungen verwenden, können Sie Objekte problemlos als JSON-Zeichenfolgen senden und zurückgeben. Verfügbare Erweiterungen für die Javascript-Unterstützung toJSON () ruft alle Javascript-Typen auf, um Daten in einer AJAX -Anforderung an den Server zu senden. AJAX Antworten können Objekte als JSON-Zeichenfolgen zurückgeben, die durch einen einfachen Auswertungsaufruf, z. Wenn die AJAX -Funktion someAjaxFunctionCallReturningJson zurückgegeben wurde

"{ \"FirstName\" : \"Fred\", \"LastName\" : \"Flintstone\" }"

sie könnten in Javascript schreiben

var obj = eval("(" + someAjaxFunctionCallReturningJson().value + ")");
alert(obj.FirstName);
alert(obj.LastName);

JSON kann auch für Web-Service-Payloads ua verwendet werden, ist jedoch für AJAX -Ergebnisse sehr praktisch.

  • Update (zehn Jahre später): Tun Sie dies nicht, sondern verwenden Sie JSON.parse
11
Steven A. Lowe

Was ist JSON?

JavaScript Object Notation (JSON) ist ein kompaktes Datenaustauschformat, das von den Objektliteralen von JavaScript inspiriert ist.

JSON-Werte können bestehen aus:

objects (Sammlungen von Name-Wert-Paaren) Arrays (geordnete Wertelisten) Strings (in doppelten Anführungszeichen) Zahlen true, false oder null

JSON ist sprachunabhängig.

JSON mit PHP?

Nach PHP Version 5.2.0 wird die JSON-Erweiterung dekodiert und die Funktionen standardmäßig kodiert.

Json_encode - Gibt die JSON-Darstellung der Werte zurück. Json_decode - Dekodiert den JSON-String. Json_last_error - Gibt den zuletzt aufgetretenen Fehler zurück.

JSON-Syntax und Regeln?

Die JSON-Syntax wird von der JavaScript-Objektnotationssyntax abgeleitet:

Daten sind in Name/Wert-Paaren angegeben. Daten sind durch Kommas getrennt. Geschweifte Klammern halten Objekte. Eckige Klammern halten Arrays

8
Elangovan

Ich mag JSON hauptsächlich, weil es so knapp ist . Für Webinhalte, die gzippt werden können, ist dies nicht unbedingt eine große Sache (daher ist x html so beliebt). Es gibt jedoch Situationen, in denen dies von Vorteil sein kann.

Beispielsweise übermittelte ich für ein Projekt Informationen, die serialisiert und über XMPP übermittelt werden mussten. Da die meisten Server die Datenmenge begrenzen, die Sie in einer einzelnen Nachricht übertragen können, empfand ich es als hilfreich, JSON anstelle der offensichtlichen Alternative XML zu verwenden.

Wenn Sie mit Python oder Javascript vertraut sind, kennen Sie JSON bereits und können es ohne viel Schulung interpretieren.

8
Jason Baker

Der Unterschied zwischen JSON und konventioneller Syntax ist folgender (in Javascript)

konventionell

 function Employee(name, Id, Phone, email){

      this.name = name;
      this.Id = Id;
      this.Phone = Phone;
      this.email = email;
  }

  //access or call it as 

var Emp = new Employee("mike","123","9373849784","[email protected]");

Mit JSON

wenn wir JSON verwenden, können wir auf unterschiedliche Weise definieren als

  function Employee(args){

   this.name = args.name;
   this.Id = args.Id;
   this.Phone = args.Phone;
   this.email = args.email;
}

//now access this as...

var Emp = new Employee({'name':'Mike', 'Id':'123', 'Phone':'23792747', 'email':'[email protected]'});

Das Wichtigste, woran wir denken müssen, ist, dass wir beim Erstellen einer Klasse alles analysieren müssen, wenn wir die Klasse "Employee" oder ein Modal mit 100 Elementen ohne JSON-Methode erstellen müssen. Mit JSON können wir die Objekte jedoch nur dann inline definieren, wenn ein neues Objekt für die Klasse definiert wird.

die folgende Zeile beschreibt die Arbeitsweise mit JSON (nur eine einfache Art, Dinge zu definieren).

 var Emp = new Employee({'name':'Mike', 'Id':'123', 'Phone':'23792747', 'email':'[email protected]'});
4
Ganesh Vellanki

Wir müssen ein Projekt auf dem College machen und wir standen vor einem sehr großen Problem, es heißt Same Origin Policy. Unter anderem führt dies dazu, dass Ihre XMLHttpRequest-Methode von Javascript keine Anforderungen an andere Domänen als die Domäne Ihrer Website stellen kann.

Sie können beispielsweise keine Anfrage an www.otherexample.com stellen, wenn sich Ihre Website auf www.otherexample.com befindet. JSONRequest lässt dies zu, aber Sie erhalten ein Ergebnis im JSON-Format, wenn diese Site dies zulässt (z. B. einen Webdienst, der Nachrichten in JSON zurückgibt). Dies ist ein Problem, bei dem Sie möglicherweise JSON verwenden könnten.

Hier ist etwas Praktisches: Yahoo JSON

4
gljivar

Es ist sehr einfach. JSON steht für Java Script Object Notation. Stellen Sie sich das als Alternative zur Verwendung von XML für die Übertragung von Daten zwischen Softwarekomponenten vor.

Ich habe zum Beispiel kürzlich eine Reihe von Webdiensten geschrieben, die JSON zurückgaben, und einige Javascript-Entwickler haben dann Code geschrieben, der die Dienste aufrief und die in diesem Format zurückgegebenen Informationen verwendete.

2
Jon

JSON (Javascript Object Notation) ist ein leichtes Datenformat für den Datenaustausch/die Datenübertragung. Es ist im Schlüsselwertpaar wie das JavaScript. Für die REST API wird sie häufig für die Datenübertragung vom Server zum Client verwendet. Heutzutage nutzen viele Social-Media-Sites dies. Obwohl ich das nicht so robust wie XML in Bezug auf Datentypen sehe. XML hat sehr reiche Datentypen und XSD. JSON fehlt etwas.

Für die gleiche Menge an Zeichenfolgendaten ist JSON im Vergleich zu XML leichter, da XML all diese öffnenden und schließenden Tags usw. hat.

2

Manchmal wird technische Aktualität gegeben, wenn keine erforderlich ist, und obwohl viele der Antworten mit den meisten Stimmen genau technisch und spezifisch sind, glaube ich nicht, dass sie einfacher zu verstehen oder prägnanter sind als das, was auf Wikipedia oder in zu finden ist offizielle Dokumentation.

Die Art, wie ich JSON sehe, ist genau das, was es ist - eine Sprache in einer Welt verschiedener Sprachen. Der Unterschied zwischen JSON und anderen Sprachen besteht jedoch darin, dass "jeder" JSON zusammen mit seiner "Muttersprache" spricht.

Nehmen wir an, wir hätten drei Personen. Eine Person spricht Igbo als ihre Muttersprache. Die zweite Person möchte mit der ersten Person interagieren, die erste Person spricht jedoch Yoruba als ihre Muttersprache.

Was können wir tun?

Zum Glück ist die dritte Person in unserem Beispiel mit Englisch aufgewachsen, spricht aber auch beide Igbo und Yoruba als zweite Sprachen und kann so als Vermittler zwischen den ersten beiden Personen fungieren.

In der Programmierwelt ist die erste "Person" Python, die zweite "Person" Ruby und die dritte "Person" JSON, die zufällig in der Lage ist, Ruby in _ zu "übersetzen".Python und umgekehrt! Natürlich ist diese Analogie nicht perfekt, aber als zweisprachige Person ist es meiner Meinung nach eine einfache Möglichkeit, die Interaktion von JSON mit anderen Programmiersprachen zu untersuchen.

2
Jerel

Im Java -Kontext ist ein Grund, warum JSON verwendet werden soll, dass es eine sehr gute Alternative zu Javas Serialisierungsframework darstellt, das (historisch) einige ziemlich schwerwiegende Sicherheitsanfälligkeiten aufweist.

Joshua Bloch bespricht dies ausführlich in Punkt 85 "Bevorzugen Sie Alternativen zu Java Serialisierung" (Effective Java 3rd Edition)

Die Serialisierung von Java sollte ursprünglich Datenstrukturen in ein Format übersetzen, das leicht übertragen oder gespeichert werden konnte. JSON erfüllt diese Anforderung ohne die oben genannten schwerwiegenden Exploits.

0
johnm