JSON

A Programozás Wiki wikiből

A JSON egy szöveges adatformátum, hasonlóan az XML-hez. A név a "JavaScript Object Notation" rövidítése, mivel a formátum szintaxisa megegyezik a JavaScript nyelv objektumok leírására szolgáló szintaxisával. Egy példa:

XML JSON
<xml>
<csalad>
  <csaladnev>Kiss</csaladnev>
  <gyereknev>Ádám</gyereknev>
  <gyereknev>Éva</gyereknev>
  <gyereknev>Laci</gyereknev>
<csalad>
<csalad>
  <csaladnev>Nagy</csaladnev>
  <gyereknev>István</gyereknev>
  <gyereknev>Mátyás</gyereknev>
  <gyereknev>Izabella</gyereknev>
<csalad>
</xml>
{ "csalad":
     [                                           // lista jele
       {                                         // asszociatív tömb jele
           "csaladnev": "Kiss",                  // normál kulcs:érték
           "gyereknev": ["Ádám", "Éva", "Laci"]  // kulcs: [ lista ]
       },
       {
           "csaladnev": "Nagy",
           "gyereknev": ["István", "Mátyás", "Izabella"]
       }
     ]
}

A formátum eredetileg azért alakult ki, hogy könnyebbé tegye a webszerveren és a böngészőben futó kód közötti kommunikációt: a böngészőben futó JavaScript kód a kapott adatot a beépített eval() függvénnyel egyből ki tudja értékelni, mivel minden JSON fájl érvényes JavaScript forrás. (Meg kell jegyezni, hogy az eval() használata csak akkor biztonságos, ha teljesen megbízunk az adat forrásában. Rossz szándékú forrás futtatható kódot is beágyazhat a küldött adatba, így tetszőleges kód végrehajtását lehetővé téve a kliensen.) A JSON szintaxisa egybeesik a Python nyelv literáljainak szintaxisával is, így Python nyelven is használható az eval() a kiértékelésre. Ha nem bízunk a JSON adat forrásában, a fenti két nyelvben is használhatunk JSON parsert, ami visszautasítja a formátumnak nem megfelelő bemenetet.

A fenti JSON példánál maradva az alábbi módon hivatkozunk rá programból (itt adat nevű változóba téve):

alert(adat["csalad"][0]["csaladnev"]);    // a 0. család családnév mezője
alert(adat["csalad"][0]["gyereknev"][0]); // a 0. család 0. gyereknév mezője

A legtöbb programozási nyelv támogatja a JSON-t. Szemmel ugyan picit nehezebben olvasható, mint a szépen formázott XML, ám mégis szöveges és sokkal kevesebb felesleges TAG információt visz át, mint az XML - főleg azonos TAG-ek ismétlődése esetén (itt gyereknev). Míg az XML különbséget tesz attribútumok és gyermek elemek között, a JSON csak gyermek bejegyzéseket ismer. Az XML mindent szövegként kezel, míg a JSON lehetővé teszi különböző adattípusok (szám, sztring, boolean és a speciális null érték) használatát.

A JSON-t általában szóközöket és soremeléseket elhagyva „egysoros formában” szokás továbbítani a kevesebb adatmennyiség okán. Ha valamelyik ponton meg szeretnénk nézni a belsejének felépítését, akkor egy JSON néző szoftverrel ilyen szépen sorokra tördelve és identálva szoktuk megjeleníteni.

Tobábbi információ[szerkesztés]