JSON

JSON (lyhenne sanoista JavaScript Object Notation) on yksinkertainen ja kevyt avoimen standardin tiedostomuoto tiedonvälitykseen ja tallennukseen. Ihmisten on helppo lukea ja kirjoittaa JSON tiedostoja. [1] JSON perustuu JavaScript-ohjelmointikielistandardin ECMA-262 3. painos – joulukuu 1999 osajoukkoon. Nimestään ja JavaScript-perustastaan huolimatta JSON on täysin kieli riippumaton, mutta käyttää käytäntöjä, jotka ovat tuttuja C-kieliperheestä. Nämä ominaisuudet tekevät JSON:ista erinomaisen tiedonsiirtokielen. Useimmat ohjelmointikielet sisältävät koodin JSON muotoisen datan luomiseksi ja parsimiseksi. JSONin Internet media type on application/json ja sen tiedostopääte .json.


JSON perustuu järjestämättömään joukkoon avain/arvo-pareja. Objekti alkaa vasemmalla aaltosulkeella "{" ja päättyy oikeaan aaltosulkeeseen "}". Jokainen avain ympäröidään lainausmerkeillä, ja sit seuraa kaksoispiste ":". Nimi/arvo-parit erotetaan pilkuilla "," toisistaan.[2] JSONI:a käytetään yleisesti tiedon siirtämiseen verkkosovelluksissa (esim. joidenkin tietojen lähettäminen palvelimelta asiakkaalle, jotta se voidaan näyttää verkkosivulla tai päinvastoin[3]. JSON muistuttaa hyvin paljon JavaScriptin objektimuotoa.


JSON formaatin määritteli alunperin Douglas Crockford vuoden 2000 alussa. Crockford ja Chip Morningstar lähettivät ensimmäisen JSON-viestin huhtikuussa 2021. JSON luotiin vaihtoehdoksi XML:lle, joka oli aikoinaan hallitseva tiedonvaihdon muoto. XML-tiedostoja on ihmiselle vaikeaa lukea ja jättää paljon toivomisen varaa koodauksen ketteryyden suhteen. JSON oli vastaus näihin ongelmiin.

Esimerkki

Esimerkki yksinkertaisesta JSON-tiedostosta:

{"menu": {
  "id": "file",
  "value": "File",
  "popup": {
    "menuitem": [
      {"value": "New", "onclick": "CreateNewDoc()"},
      {"value": "Open", "onclick": "OpenDoc()"},
      {"value": "Close", "onclick": "CloseDoc()"}
    ]
  }
}}

Tuetut tietomuodot

Numero: etumerkillinen desimaaliluku, joka voi sisältää murto-osan ja voi käyttää eksponentiaalista E-merkintää, mutta ei voi sisältää ei-lukuja, kuten NaN. Muoto ei tee eroa kokonaislukujen ja liukulukujen välillä. JavaScript käyttää IEEE-754-kaksoistarkkuutta liukulukumuotoa kaikissa numeerisissa arvoissaan, mutta muut JSON:ia käyttävät kielet voivat koodata numeroita eri tavalla.

Merkkijono: nollan tai useamman Unicode-merkin sarja. Merkkijonot on rajattu lainausmerkeillä, ja ne tukevat kenoviivaa.

Boolean arvo: joko tosi (true) tai epätosi (false)

Taulukko: järjestetty luettelo nollasta tai useammasta elementistä, joista jokainen voi olla mitä tahansa tyyppiä. Taulukot käyttävät hakasulkeita "[]" ja elementit erotetaan pilkuilla toisistaan.

Objekti: kokoelma nimi-arvo-pareja, joissa nimet (kutsutaan myös avaimiksi) ovat merkkijonoja. Nykyinen ECMA-standardi sanoo: "JSON-syntaksi ei aseta mitään rajoituksia niminä käytettäville merkkijonoille, ei vaadi nimimerkkijonojen olevan yksilöllisiä, eikä anna mitään merkitystä nimi/arvo-parien järjestykselle. Objektit erotetaan aalto sulkeilla "{}" ja nimi/arvoparit erotetaan pilkuilla. Kussakin nimi/arvo-parissa kaksoispiste ":" erottaa avaimen tai nimen sen arvosta.

null: tyhjä arvo sanalla null

Standardit

JSON:ia koskevia standardointidokumentteja:

  • RFC 4627
  • ECMAScript 262, kappale 15.12[4]
  • ECMA 404[5]
  • RFC 7159 (korjaus versioon RFC 7158)
  • RFC 8259

Katso myös

  • JSON Web Token
  • YAML
  • Ajax
  • XML

Lähteet

  1. JSON www.json.org. Viitattu 27.9.2022.
  2. JSON www.json.org. Viitattu 27.9.2022.
  3. Working with JSON - Learn web development | MDN developer.mozilla.org. Viitattu 27.9.2022. (englanniksi)
  4. https://262.ecma-international.org/5.1/#sec-15.12
  5. https://www.ecma-international.org/publications-and-standards/standards/ecma-404/

Aiheesta muualla

  • The JSON Specification
  • Yleistä JSON:sta suomeksi
  • Parsing JSON is a Minefield (englanniksi)
  • JSON Schema (englanniksi)