close

JSON

Siirry navigointiin Siirry hakuun
JSON
JSON-vektori logo.svg
https://json.org/ , https://json.org/json-fr.html ja https://json.org/json-it.html
Yleistä tietoa
tiedostopääte .json
miimi-tyyppinen application/json
muoto tyyppi merkintäkieli
pidennetty alkaen javascript
Standardit) STD 90 ( RFC  8259), ECMA-404 , ISO/IEC 21778:2017
avoin muoto Joo 
Image
Crockford oli ensimmäinen, joka määritteli ja teki suosituksi JSON:n.

JSON ( JavaScript Object Notation ) on yksinkertainen tekstimuoto tiedonvaihtoon. Se on JavaScript - objektin kirjaimellisen merkinnän osajoukko , vaikka sen laajan käyttöönoton vuoksi vaihtoehtona XML :lle sitä pidetään kielestä riippumattomana muotona.

Yksi JSONin oletetuista eduista XML:ään verrattuna tiedonsiirtomuotona on, että sille on paljon helpompi kirjoittaa jäsennys . JavaScriptissä JSON-teksti voidaan jäsentää helposti funktiolla eval(), mikä (johtuen JavaScriptin yleisyydestä lähes kaikissa verkkoselaimissa ) on auttanut AJAX -kehittäjäyhteisön hyväksymisessä .

Käytännössä argumenteilla jäsentimien kehittämisen helppoudesta tai niiden suorituskyvystä ei ole juurikaan merkitystä johtuen eval()nykyaikaisiin selaimiin sisäänrakennetun alkuperäisen XML-käsittelyn käytön aiheuttamista turvallisuuskysymyksistä ja lisääntymisestä. Tästä syystä JSON:ia käytetään yleisesti ympäristöissä, joissa asiakkaan ja palvelimen välisen tietovirran koko on ensiarvoisen tärkeä (täten Yahoo!, Google , Mozilla jne. käyttävät sitä miljoonia käyttäjiä palvelevana), kun lähdetiedot ovat nimenomaisesti luotettu ja jos ei ole tärkeää, että sinulla ei ole XSLT -käsittelyä asiakkaan tietojen käsittelemiseksi.

Vaikka JSONia pidetään yleensä vaihtoehtona XML:lle, totuus on, että JSON:n ja XML:n käyttö samassa sovelluksessa ei ole harvinaista . Näin ollen asiakassovelluksen, joka integroi Google Mapsin tiedot säätietoihin SOAP :ssa ( Simple Object Access Protocol ) , on käytettävä molempia muotoja.

Joulukuussa 2005 Yahoo! alkoi tarjota valinnaista JSON-tukea joissakin verkkopalveluissaan . [ 1 ]

Nimi ja ääntäminen

Englannissa JSON lausutaan lyhenteellä , kuten J -kirjaimen nimi ( jay , /yéi/), jota seuraa tavu "poika". Tavallinen tulos ensimmäisellä korostetulla tavulla (/yéison/) lausutaan samalla tavalla kuin nimi Jason, vaikka Douglas Crockford , JSON-muodon kehittäjä, korostaa toista tavua nimellä /yeisón/. [ 2 ]

Muista, että espanjaksi JSON on lyhenne ja että joskus ei ole yhtä tapaa lausua niitä. Ortografisen normin [ 3 ] mukaan normaali asia olisi lausua se muodossa /jotasón/. Jotkut ääntävät sen nimellä /jason/, mutta se menisi kauemmaksi lyhenteen ääntämisestä ottamalla käyttöön vielä yhden kirjaimen, jota ei ole lyhenteessä (JASON), ja siksi se olisi virheellinen ääntäminen.

Jotkut, jotka eivät ole lingvistejä, haluavat ääntää lyhenteen espanjaksi englannin kielellä [ 4 ] , mutta se ei tee siitä oikeampaa, vaan se olisi pikemminkin tyypillisempi amerikkalaiselle spanglishille . FBI:ta ei lausuta espanjaksi /éfbiai/, aivan kuten /síaiei/ ei lausuta CIA:sta puhuttaessa. Englanninkielinen lyhenne ASAP ( mahdollisimman pian ) lausutaan espanjaksi /asap/, ei /eieseipi/ kielen taloudesta. Espanjan sääntöjen mukaan se voitaisiin leksikalisoida nimellä "jotasón/jotasones", mutta akateemisissa teksteissä sillä ei ole käyttöä.

Syntaksi

JSONin käytettävissä olevat tietotyypit ovat:

  • Numerot: Negatiiviset luvut ovat sallittuja, ja ne voivat valinnaisesti sisältää pisteillä erotetun murto-osan. Esimerkki: 123 456
  • Merkkijonot: edustavat nollan tai useamman merkin sarjoja. Ne on suljettu lainausmerkkeihin ja erotusmerkkijonot ovat sallittuja. Esimerkki:"Hola"
  • Boolen arvot: Ne edustavat Boolen arvoja ja niillä voi olla kaksi arvoa: truejafalse
  • null: edustaa nolla-arvoa.
  • Taulukko : Esittää järjestetyn listan nollasta tai useammasta arvosta, joka voi olla mitä tahansa tyyppiä. Arvot erotetaan pilkuilla ja vektori on suljettu hakasulkeissa. Esimerkki["juan","pedro","jacinto"]
  • Objektit: Nämä ovat järjestämättömiä kokoelmia muotoa <nimi>:<arvo> olevia pareja, jotka on erotettu pilkuilla ja suljettu aaltosulkeisiin. Nimen tulee olla lainausmerkkien sisällä oleva merkkijono. Arvo voi olla mitä tahansa tyyppiä. Esimerkki:
{ 
  "osasto" : 8 , 
  "osastonimi" : "Myynti" , 
  "johtaja" :  "Juan Rodríguez" , 
  "työntekijät" :[ 
    { 
      " etunimi" : "Pedro" , 
      "sukunimi" : "Fernández" 
    },{ 
      "nimi" " : "Jacinto" , 
      "sukunimi" : "Benavente" 
    }  
  ] 
}

Käsittelymallit

Koska JSON on laajalti käytetty muoto tiedonvaihtoon, API:ita on kehitetty eri kielille (esim. ActionScript , C , C++ , C# , ColdFusion , Common Lisp , Delphi , E , Eiffel , Java , JavaScript , ML , Objective- C , Objective CAML , Perl , PHP , Python , Rebol , Ruby , Lua ja Visual FoxPro ), joiden avulla voit jäsentää, luoda, muuntaa ja käsitellä tämäntyyppisiä tietoja.

Useimmin käytetyt ohjelmointimallit JSONin käsittelemiseksi eri kielillä ovat: [ 5 ]

  • Objektimalli. – Koko JSON on tallennettu muistiin puumuodossa. Tätä puuta selataan, jäsennetään ja muokataan asianmukaisilla API:illa. Koska se lataa kaiken muistiin ja sitten käsittelee sen, tämä malli kuluttaa paljon resursseja. Sisällön manipulointi on kuitenkin erittäin joustavaa. Tämä malli on sallittu esimerkiksi Javassa JSR 353:ssa ja Jackson -kirjastossa .
  • Vuomalli: Tiedot luetaan tai kirjoitetaan lohkoissa. Esimerkiksi joka kerta kun lohko luetaan, jäsentäjä luo asianmukaiset tapahtumat osoittamaan, minkä tyyppinen lohko se on. Asiakas voi käsitellä sisältöä kuuntelemalla sopivia tapahtumia. Lisäksi asiakas päättää, miten JSON luetaan, jolloin sisältö voidaan pysäyttää tai ohittaa kesken prosessin. Kirjoitusprosessilla on vastaavat ominaisuudet. Esimerkiksi JSR 353 sallii tämän mallin javassa.
  • JSON-objektien muuntaminen kieliobjekteiksi. Javassa tämän tekevät esimerkiksi Jackson- ja Gson- kirjastot .

JSONin käyttö

Teoriassa on triviaalia jäsentää JSON JavaScriptiksi JSON.parse()kielen sisäänrakennetun toiminnon avulla. Esimerkiksi:

myObject  =  JSON . jäsentää ( json_data );

Käytännössä turvallisuusnäkökohdat kieltävät yleensä evalin käyttämisen raakatiedoissa , ja turvallisuuden varmistamiseksi tulisi käyttää erillistä JavaScript-jäsennintä. JSON.orgin tarjoama jäsentäjä käyttää sitä eval()jäsennysfunktiossaan ja suojaa sitä säännöllisellä lausekkeella, jotta funktio näkee vain turvalliset lausekkeet.

Esimerkki JSON-tietojen käytöstä XMLHttpRequestin avulla on:

var  http_request  =  uusi  XMLHttpRequest (); 
var  url  =  "http://example.net/jsondata.php" ;  // Tämän URL-osoitteen pitäisi palauttaa JSON-tiedot
 
// Lataa JSON-tiedot palvelimelta. 
http_pyyntö . onreadystatechange  =  handle_json ; 
http_pyyntö . open ( "GET" ,  url ,  true ); 
http_pyyntö . lähetä ( null );
 
function  handle_json ()  { 
  if  ( http_request . readyState  ==  4 )  { 
    if  ( http_request . status  ==  200 )  { 
      var  json_data  =  http_request . vastausteksti ;  
      var  the_object  =  eval ( "("  +  json_data  +  ")" ); 
    }  else  { 
      alert ( "URL-osoitteessa oli ongelma." ); 
    } 
    http_pyyntö  =  null ; 
  } 
}

Huomaa, että kaikki selaimet eivät tue XMLHttpRequestin käyttöä tässä esimerkissä, koska Internet Explorer -, Opera- , Safari- ja Mozilla - pohjaisille selaimille on olemassa syntaktisia muunnelmia . [ 6 ]

On myös mahdollista käyttää <iframe>piilotettuja elementtejä tietojen pyytämiseen asynkronisesti tai käyttää pyyntöjä <form target="url_to_cgi_script" />. Nämä menetelmät olivat yleisimpiä ennen XMLHttpRequestin laajaa käyttöä.

NET-kehystä varten on kirjasto [ 7 ] ​, joka vie .NET-luokat JSON-syntaksilla asiakkaan ja palvelimen välistä viestintää varten molempiin suuntiin.

JSON-esimerkki

Alla on yksinkertainen esimerkki valikkopalkin määrittelystä JSON- ja XML-tiedoilla.

JSON:

{ 
    "menu" :  { 
        "id" :  "file" , 
        "value" :  "Tiedosto" , 
        "ponnahdusikkuna" :  { 
            "menuites" :  [ 
                { 
                    "arvo" :  "Uusi" ,  "onclick" :  "LuoUusiDoc()" 
                },{ 
                    "value" :  "Avaa" ,  "onclick" :  "OpenDoc()" 
                },{ 
                    "arvo" :  "Sulje" ,  "onclick" :  "CloseDoc()" 
                } 
            ] 
        } 
    } 
}

Se on seuraavan XML:n mahdollinen JSON-esitys:

  <menu  id= "file"  value= "Tiedosto" > 
    <ponnahdusikkuna> 
      <menuitem  value= "New"  onclick= "CreateNewDoc()"  /> 
      <menuitem  value= "Avaa"  onclick= "OpenDoc()"  /> 
      <menuitem  value= "Close"  onclick= "CloseDoc()"  /> 
    </popup> 
  </menu>

Vertailu XML:ään ja muihin merkintäkieliin

Palvelinpuolella on monia JSON-jäsentimiä, joista ainakin yksi on useimmille ympäristöille. Joillakin kielillä, kuten Java tai PHP , on valittavissa erilaisia ​​toteutuksia. JavaScriptissä jäsentäminen on mahdollista natiivisti JSON.parse(). Molemmista muodoista puuttuu mekanismi suurten binääriobjektien esittämiseksi .

XML-vertailusta huolimatta JSON voi olla erittäin kompakti ja tehokas, jos sitä käytetään tehokkaasti. Esimerkiksi haku DHTML - sovelluksella "BarracudaDrive" (englanniksi) . Arkistoitu alkuperäisestä 21. toukokuuta 2006.  vastaanottaa hakemistoluettelot JSON-muodossa palvelimelta. Tämä hakusovellus kysyy jatkuvasti palvelimelta uusia hakemistoja, ja se on hämmästyttävän nopea, jopa hitaalla yhteydellä.

Palvelinpuolen ympäristöt vaativat yleensä sisäänrakennetun JSON-jäsennysobjektin tai -toiminnon. Jotkut ohjelmoijat, erityisesti ne, jotka tuntevat C-kielen , pitävät JSON:ia luonnollisempana kuin XML:ää, mutta toiset kehittäjät pitävät sen ytimekkäästä merkinnästä hieman hämmentävää, varsinkin kun he käsittelevät erittäin sisäkkäisiä tai syvälle sisäkkäisiä tietoja.

JSON.orgissa on enemmän vertailuja JSON:n ja XML:n välillä [ 8 ]

YAML on JSON-superjoukko, joka yrittää voittaa joitakin sen rajoituksia. Vaikka se on huomattavasti monimutkaisempi, [ 9 ] sitä voidaan silti pitää kevyenä. Ruby - ohjelmointikieli käyttää YAML :a oletusarvoisena sarjoitusmuotona . Näin ollen on mahdollista käsitellä JSONia melko yksinkertaisesti.

Katso myös

Viitteet

  1. Yahoo! . «JSONin käyttäminen Yahoo! Verkkopalvelut» . Arkistoitu alkuperäisestä 6. tammikuuta 2010 . Haettu 2. maaliskuuta 2010 . 
  2. ^ "Doug Crockford "Google Tech Talks: JavaScript: Hyvät osat " " . 7. helmikuuta 2009. 
  3. RAE. «lyhenne | Pan-latinalaisamerikkalainen epäilyksen sanakirja» . "Pan-latinalaisamerikkalainen epäilyksen sanakirja" . Haettu 25. kesäkuuta 2021 . 
  4. Kapic, Edin (15. huhtikuuta 2016). «"Jotasón" ja tietokonetermien (huono) ääntäminen» . EdinKapic.com . Haettu 2.9.2018 . 
  5. RESTful Java Web Services. Jobinesh Purushothaman. Packt Publishing 2015. Toinen painos
  6. ".json-tiedostotunniste: Mitä varten JSON-tiedostot ovat?" . avoimet tiedostot . Haettu 22. lokakuuta 2021 . 
  7. http://ajax.schwarz-interactive.de Arkistoitu 7. maaliskuuta 2011, Wayback Machinessa .
  8. "Esimerkkisivu" . JSON.org (englanniksi) . 
  9. Ippolito, Bob (19. heinäkuuta 2005). "Mitä tapahtui YAML:lle?" (englanniksi) . Arkistoitu alkuperäisestä 14. helmikuuta 2012 . Haettu 22.11.2012 . 

Ulkoiset linkit

opetusohjelmia