Muutujad, massiivid ja objektid on tuttav ja mugav andmete esitusviis. Andmeid on tavaks kirjeldada brauseri keeles JavaScript, mis pole PHP serverikeeles vajalik. JSON-vorming võimaldab need kokku võtta üheks tervikuks ja mitte keskenduda programmeerimiskeelele. Sel juhul muutuvad andmed paarideks: “nimi = väärtus”. Igaühe neist võib väärtus olla ka selliste paaride kogum.

JSON-i on tavaks seostada lokkis sulgudega ja viimane on üsna õigustatud, kuna JSON-vorming = JavaScript Object Notation. Viimaste eriti dünaamiliste aastate jooksul on palju muutunud. Konkreetsel eesmärgil loodu tõi sageli ootamatuid tulemusi või avas uusi horisonte.

Andmevahetus: brauser – server

AJAX-tehnoloogiast on saanud traditsiooniline, regulaarne lehtede värskendamine täielikult on lakanud olemast populaarne. Külastaja käivitab saidi avades rea osalisi andmevahetusi, kui teatud lehed muutuvad ainult asjakohases kohas.

Arvatakse, et JSON-i tekkimine on seotud AJAX-i kasutamisega, kuid tegelikult on assotsiatiivne ja selle objektide tähistus (objektide kirjeldamise ja kasutamise süntaksi omadused) JSON-iga palju rohkem seotud kui andmevahetus brauser ja server.

Kuna tänapäevaste saitide lehtede sisu on muutunud tõeliselt massiliseks (mahukas), on andmevahetuse vormingu tõhusus omandanud erilise tähtsuse. See ei tähenda, et JSON-ist on saanud uus andmeesitus, kuid tõsiasi, et see on pikka aega olnud JavaScripti süntaksi element, on märkimisväärne.

Kirillitsa kasutamine muutujate nimetamisel on väga ootamatu nähtus (nonsenss), kuid see töötab Chrome'i, Firefoxi ja isegi Internet Explorer 11 uusimates versioonides.

Kirillitsa ja JSON

Muidugi pole mõtet seda täiesti ootamatut nähtust kasutada, meenutades, kui kergesti muutuvad vene tähtedega kirjutatud muutujate väärtused jaburaks: mida me saame öelda nimede, eriti väliste nimede kohta.

On kaheldav, et kirillitsas nimetustes algatust toetab brauseri väliskeskkond, millega tuleb pidevalt kokku puutuda. Kuid see asjaolu väärib tähelepanu sel lihtsal põhjusel, et JSON-vormingus on võimalus kirjutada nimesid ja väärtusi nii, nagu arendaja soovib. See on oluline, kuna iga ülesande puhul lihtsustab seda nõudva rakendusala kirjeldus oluliselt silumist ja vähendab vigade arvu.

Pole tähtis, mis täpselt oli süntaktilise uuenduse - JSON - alus, oluline on, et see andis seadusliku õiguse ja reaalse võimaluse vastavuse seadmiseks: "mis tahes nimi = mis tahes väärtus".

Peame avaldama austust JavaScripti keelele: süntaksis pakutu ei kohusta arendajat ega sunni talle midagi peale. Arendaja kasutab vabalt keele süntaksit, et moodustada optimaalselt andmemudel ja nende kasutamise algoritm.

PHP ja JSON

Andmete vastuvõtmisega JSON-vormingus võimaldab server (eelkõige PHP kaudu) neid niisugusel kujul töödelda ja tulemuse sarnases vormingus brauserisse tagasi saata. PHP allika massiiv:

  • $cJSON = massiiv ("a"=> "alfa", "b"=> "beeta", "g"=> "gamma").

Teisenda JSON-iks brauserisse edastamiseks:

  • $cJS = json_encode($cJSON).

Tulemus:

  • ("a":"alfa","b":"beeta","g":"gamma").

Fotol kujutatud pesitsemine on lubatud.

Siin lisati loodud massiiv uue elemendiga "iseenesesse" automaatse indeksiga "0" ja seejärel uuesti määratud indeksiga "z".

Json_decode() teisendab JSON-stringi PHP-massiiviks. Sarnaseid tulemusi saab saavutada funktsioonide ja explode() manipuleerimisega. Mõnel juhul on see valik eelistatavam.

Pesastustase

Elemente saab pesastada nii brauseri kui ka serveri poolel. Praktikas pakub JSON-vorming (RFC 4627 standardkirjeldus) oluliselt rohkem kui 4 pesastustaset, kuid seda funktsiooni ei tohiks kuritarvitada.

Parem on mitte kunagi ületada mõistlikku piisavust; see muudab koodi loetavaks, hõlbustades teiste arendajate silumist ja mõistmist.

JSON-i nimetatakse tavaliselt andmekonstruktsioonideks, mis on XML-ist lihtsamad ja arusaadavad nii inimestele kui ka arvutitele. See kehtib siis, kui andmemaht on väike ja arendaja on pesastamise taseme targalt valinud. Kõigil muudel juhtudel on sulgude arvu loendamine ja mõistmine keeruline nii brauseri kui ka serveri poolel.

JSON-failid

JSON-i kasutamine praktikas ei piirdu sageli inimesele loetava lühikese stringiga. Igasugune andmekonstruktsioon on alati pragmaatiline. Samal ajal saab JSON-i tõhusalt kasutada nii reaalsete ülesannete andmetes (ettevõtte personal) kui ka ajutiste andmete juurutamiseks (objekti vahemälu).

Ettevõtte töötajad ja JSON-vorming: näide

Tavaliselt on ühe inimese kohta kirje perekonnanimi, eesnimi, isanimi, sünniaasta, eriala, haridus, ... ja veel mõned lihtsad väärtused. Isegi eriti nõudlikes ettevõtetes ei ületa rekord ühe inimese kohta tosinat-kahte valdkonda. See on tajutav ja selle saab paigutada andmebaasi stringi.

Kui ettevõttes töötab mitu inimest, on see üks asi, aga kui neid on kümneid tuhandeid, on see täiesti erinev. Andmebaasi kasutamist saab jätkata, kuid selle failina salvestamine tundub otstarbekam ja ligipääsetavam.

JSON on lihttekstifail. Personalitabeli juhtum on ütlematagi selge. Saate seda alati lugeda. Avamine ja redigeerimine on saadaval ka igas tekstiredaktoris, millel ei ole kombeks faili sisule oma teenuseteavet lisada. Üldiselt on *.json puhas tekst nii brauseris kui ka faili sees – string.

Fotol on pildi moodustava objekti vahemälu, näide.

See on näide faili sisust, mille on loonud sait, mis pakub kruusidele ja keraamikale värvilist 3D-printimist. Loomulikult on sellise JSON-vormingu olemasolul selle avamise otsustamine tõesti problemaatiline. Sellel ja sarnastel juhtudel pole aga faili lugemisega probleeme: PHP loeb faili, analüüsib ja edastab brauserile. Külastaja poolt muudetud andmed tagastatakse serverisse ja kirjutatakse tagasi.

Sellisel juhul toimib fail muutujana, mis on salvestatud väljaspool koodi. Vajadusel saab muutuja failist väärtuse ja kui külastaja seda saidi pakutavas dialoogis muudab, salvestatakse kõik muudatused nii nagu on. Faili sisu pole vaja lugeda ja kontrollida.

JSON-i kasutatakse sageli teenuseteabe salvestamiseks ja kasutamiseks – see ei ole personalitabel ja seda ei pea nägema ei arendaja ega saidi külastaja.

XML ja JSON

“Igal asjal on oma aeg” on klassikaline teadmine, mida aktsepteeriti aksioomina juba enne programmeerimise tulekut. “Miski lihtsalt ei paista” – see juhtus ka enne, kui inimene kirjutas tehiskeeles esimese arusaadava programmi.

Andmevormingud tulenevad tegelikest vajadustest ja põhinevad saavutatud teadmistel. HTML-il on oma tee, XML-il on oma tee ja JSON on JavaScripti objektiloogika, mida laiendatakse teistele keeltele. Üksteise võrdlemine ei ole parim asi. Igaühele oma.

XML saab oma ülesannetega suurepäraselt hakkama ja ilmselgelt ei saa sellest ajalugu. Ja JSON-i kasutati kuni 2006. aastani; lihtsalt mitte iga arendaja ei pidanud oma kohuseks deklareerida teatud võimalusi oma andmete esitamiseks.

Praktikas on olnud juhtumeid, kus BASICus kirjutati programme, mis ei kasutanud JSON-i kui sellist, vaid salvestasid suurepäraselt paarid “nimi = väärtus” ja tegid need õigel ajal õigetele algoritmidele kättesaadavaks.

Erimärgid ("`", "~", "|", ...) ja andmevormingud

Harjumus töötada JavaScriptis assotsiatiivsete massiivide ja objektidega muudab JSON-i kasutamise loomulikuks ja mugavaks. See on tõesti suurepärane formaat, kuid stringide ja massiividega manipuleerimisel on eraldumise ja liitmise võimel palju sügavamad juured.

JavaScripti keele ühendamise/jagamise ja PHP keele implode/explode funktsioonid võimaldavad mugavalt ja tõhusalt kasutada nii XML-i, JSON-i andmevorminguid kui ka oma versiooni. Viimane on sageli optimaalne, samas kui kaks esimest sobivad ideaalselt üldiste kasutusvõimaluste jaoks. Kui teavet edastatakse teise arendajasse, serverisse, faili või andmebaasi, pole paremat viisi XML-i ja JSON-i leidmiseks. Kõik töötavad nendega, seega info edastamine/vastuvõtmine kommentaare ei vaja.

JSON-i kasutamine Androidis

Andmete lugemine ja kirjutamine JSON-vormingus Androidis pole mitte ainult norm, vaid on ka palju objekte, mis keskenduvad selle konkreetse andmevorminguga töötamisele.

Sel juhul kasutatakse JSON-vormingut. See võib tõsi olla, kuid küsimus ei ole sotsiaalvõrgustike fenomenaalsuses, vaid selles, et info esitamine formaadis “nimi = väärtus” on tõesti mugav nii programmeerimiseks kui ka kasutamiseks. Erinevalt rangest ja keerulisest XML-ist on see tõeliselt inimsõbralik formaat.

Assotsiatiivsed massiivid

Juhtub nii, et muutujaid tuleb kirjeldada (JavaScript) või määrata vähemalt algväärtus (PHP). Mõlemal juhul võib muutuja oma tüüpi väga lihtsalt muuta. Keel teostab selle teisenduse vajadusel automaatselt.

Aga miks ei võiks muutuja ka oma nime muuta, ilmuda algoritmi täitmise ajal ja kaduda, kui seda enam ei vajata? Assotsiatiivsed massiivid lahendavad selle probleemi, kuid siis selliste suhteliselt dünaamiliste muutujate kasutamisel järgivad massiivi nimi ja vastavad süntaktilised konstruktsioonid, kus neid kasutatakse.

See asjaolu on PHP-s eriti väljendunud, kuid võite sellega leppida, nagu ka sümboliga "$" muutuja nimes ja kombinatsiooniga "$this->" objekti sees. Programmeerides korraga JavaScriptis ja PHP-s, oled alguses tõesti üllatunud, kui erinev kõik on, aga siis muutub kõik nii tuttavaks ja loomulikuks...

Assotsiatiivne massiiv -> JSON

Selles näites luuakse PHPOffice/PHPWordi teeki kasutades *.docx dokument ja massiiv aProperties sisaldab selle dokumendi atribuute (autor, ettevõte, pealkiri, kategooria, loomise kuupäev...).

Teine massiiv sisaldab lehe andmeid:

  • orientatsioon (maastik või tavaline);
  • vertikaalsed ja horisontaalsed mõõtmed;
  • taanded (veerised vasak, ülemine, alumine, parem);
  • päised ja jalused.

Dokument genereeritakse serveris, kuhu on installitud PHPOffice/PHPWordi teek. Sait võimaldab teil hallata nende massiivide väärtusi JavaScripti abil. JSON-vormingus tulemus tagastatakse serverisse ja seda kasutatakse PHP-algoritmides, selle konstruktsioonides, st massiivides.

Dünaamilised muutujad

JSON-vorming lahendab dünaamiliste muutujate probleemi. Siin saate luua, muuta ja kustutada muutujaid ilma tarbetu süntaktilise segaduseta. See näeb kena välja ja seda kasutatakse JavaScriptis.

Selles näites hangib funktsioon GetOjInfo() objektilt väärtuse nime ja väärtuse. Algselt on ojInfo muutujale määratud JSON-stringiobjektil kolm elementi: nimi, vanus ja töö. Veidi hiljem lisatakse muutuja Olek.

Pärast esimest kustutamisoperaatorit kaotab rida ojInfo vanuseelemendi, pärast teist kustutamist kaotab tööelemendi. Kui eeldame, et see string on valik muutujaid, millel on teatud tähendus, siis JSON-i abil saate tegelikult luua, muuta ja kustutada nende komplekte väljaspool JavaScripti keele kirjeldamise ja töötlemise operatsioonivälja (süntaksit).

JSON-vorming pole selle valiku jaoks loodud, kuid see on võimalik, praktiline ja mugav.

Kindlasti olete kunagi JSONist kuulnud. Mis see on? Mida see teha saab ja kuidas seda kasutada?

Selles õpetuses käsitleme JSON-i põhitõdesid ja käsitleme järgmisi punkte.

  • Mis on JSON?
  • Milleks JSON-i kasutatakse?
  • Kuidas luua JSON-stringi?
  • Lihtne näide JSON-stringist.
  • Võrdleme JSON-i ja XML-i.
  • Kuidas töötada JSON-iga JavaScriptis ja PHP-s?
Mis on JSON?

JSON on lihtne tekstipõhine viis struktureeritud andmete salvestamiseks ja edastamiseks. Lihtsa süntaksi abil saate lihttekstina salvestada kõike alates ühest numbrist kuni stringide, massiivide ja objektideni. Samuti saate keerukate andmestruktuuride loomiseks omavahel linkida massiive ja objekte.

Kui JSON-string on loodud, on seda lihtne teise rakendusse või muusse võrgu asukohta saata, kuna see on lihttekst.

JSON-il on järgmised eelised:

  • See on kompaktne.
  • Selle lauseid on lihtne lugeda ja koostada nii inimestel kui ka arvutitel.
  • Seda saab hõlpsasti teisendada enamiku programmeerimiskeelte andmestruktuuriks (numbrid, stringid, tõeväärtused, massiivid jne)
  • Paljudel programmeerimiskeeltel on JSON-struktuuride lugemiseks ja loomiseks funktsioonid ja teegid.

Nimi JSON tähistab JavaScripti objekti märkimist. Nagu nimigi ütleb, põhineb see objektide (sarnaselt assotsiatiivsete massiivide loomisel teistes keeltes) ja massiivide määratlemisel.

Milleks JSON-i kasutatakse?

JSON-i levinuim kasutusala on andmete saatmine serverist brauserisse. Tavaliselt edastatakse JSON-andmed AJAX-i abil, mis võimaldab brauseril ja serveril suhelda ilma lehte uuesti laadimata.

  • Kasutaja klõpsab veebipoes toote pisipildil.
  • Brauseris töötav JavaScript genereerib serveris töötavale PHP-skriptile AJAX-i päringu, edastades valitud toote ID.
  • PHP-skript saab andmebaasist toote nime, kirjelduse, hinna ja muu teabe. Seejärel koostab see andmetest JSON-stringi ja saadab selle brauserisse.
  • Brauseris töötav JavaScript võtab vastu JSON-stringi, dekodeerib selle ja kuvab lehel tooteteabe kasutaja jaoks.
  • Samuti saate JSON-i kasutada andmete saatmiseks brauserist serverisse, edastades GET- või POST-päringutele parameetrina JSON-stringi. Kuid see meetod on vähem levinud, kuna andmete edastamist AJAX-i päringute kaudu saab lihtsustada. Näiteks võib toote ID sisalduda URL-is GET-päringu osana.

    jQuery teegil on mitu meetodit, näiteks getJSON() ja parseJSON(), mis muudavad andmete toomise JSON-i abil lihtsaks AJAX-i päringute kaudu.

    Kuidas luua JSON-stringi?

    JSON-stringi loomiseks on mõned põhireeglid.

    • JSON-string sisaldab kas väärtuste massiivi või objekti (nime/väärtuste paaride assotsiatiivne massiiv).
    • Massiiv on ümbritsetud nurksulgudega ([ ja ]) ning sisaldab komadega eraldatud väärtuste loendit.
    • Objekt on suletud sulgudes (( ja )) ning sisaldab komadega eraldatud nimede/väärtuste paaride loendit.
    • nimi/väärtus paar koosneb jutumärkides olevast välja nimest, millele järgneb koolon (:) ja välja väärtus.
    • Tähendus massiivis või objektis võib olla:
      • Arv (täisarv või ujukoma)
      • String (jutumärkides)
      • Boole'i ​​väärtus (tõene või väär)
      • Teine massiiv (sulgudes)
      • Teine objekt (suletud lokkis traksidega)
      • nullväärtus

    Topeltjutumärkide lisamiseks stringi peate kasutama kaldkriipsu: \" . Nagu paljude programmeerimiskeelte puhul, saate juhtmärgid ja kuueteistkümnendkoodid stringi lisada, jättes nende ette kaldkriipsu. Vaadake üksikasju JSON-i veebisaidilt.

    Lihtne JSON-stringi näide

    Allpool on näide JSON-vormingus tellimisest:

    ( "tellimuse ID": 12345, "shopperName": "Vanya Ivanov", "shopperEmail": " [e-postiga kaitstud]", "contents": [ ( "productID": 34, "productName": "Super product", "quantity": 1 ), ( "productID": 56, "productName": "Miracle product", "quantity": 3 ) ], "orderCompleted": tõsi )

    Vaatame rida üksikasjalikult:

    • Loome objekti lokkis traksidega (( ja )).
    • Objektil on mitu nime/väärtuse paari: "orderID": 12345 atribuut nimega "orderId" ja täisarvväärtusega 12345 "shopperName": "Vanya Ivanov" atribuut nimega "shopperName" ja stringi väärtusega "Vanya Ivanov" " "shopperEmail": " [e-postiga kaitstud]" Atribuut nimega "shopperEmail" stringiväärtusega " [e-postiga kaitstud]" "contents": [ ... ] atribuut nimega "contents", mille väärtus on massiiv "orderCompleted": true Atribuut nimega "orderCompleted" ja tõeväärtus true
    • Massiivis "sisu" on 2 objekti, mis esindavad tellimuse üksikuid üksusi. Iga objekt sisaldab 3 atribuuti: toote ID , tootenimi ja kogus.

    Muide, kuna JSON põhineb JavaScripti objektide deklareerimisel, saate ülaltoodud JSON-stringi kiiresti ja lihtsalt muuta JavaScripti objektiks:

    var cart = ( "tellimuse ID": 12345, "shopperName": "Vanya Ivanov", "shopperEmail": " [e-postiga kaitstud]", "contents": [ ( "productID": 34, "productName": "Super product", "quantity": 1 ), ( "productID": 56, "productName": "Miracle product", "quantity": 3 ) ], "orderCompleted": tõsi );

    JSON-i ja XML-i võrdlus

    Mitmel viisil võite mõelda JSON-ile kui XML-i alternatiivile, vähemalt veebirakenduste ruumis. AJAX-i kontseptsioon põhines algselt XML-i kasutamisel andmete edastamiseks serveri ja brauseri vahel. Kuid viimastel aastatel on JSON muutunud AJAX-i andmete edastamiseks üha populaarsemaks.

    Kuigi XML on end tõestanud tehnoloogia, mida kasutatakse paljudes rakendustes, on JSON-i eeliseks kompaktsem ja hõlpsamini äratuntav andmevorming.

    Ülaltoodud näidisobjekt XML-is näeks välja selline:

    tellimuse ID 12345 ostjaNimi Vanya Ivanov ostjaEmail [e-postiga kaitstud] sisu tooteID 34 tooteNimi Super toote kogus 1 tooteID 56 tooteNimi Miracle toote kogus 3 tellimust Täidetud tõsi

    XML-versioon on oluliselt suurem. Tegelikkuses on see 1128 tähemärki pikk, samas kui JSON-versioon on vaid 323 tähemärki pikk. XML-versioonist on samuti üsna raske aru saada.

    See on muidugi radikaalne näide. Ja on võimalik luua kompaktsem XML-kirje. Kuid isegi see on oluliselt pikem kui JSON-i ekvivalent.

    JavaScripti JSON-stringiga töötamine

    JSON-il on lihtne vorming, kuid JSON-stringi käsitsi loomine on üsna tüütu. Lisaks peate sageli võtma JSON-stringi, teisendama selle sisu muutujaks, mida saab koodis kasutada.

    Enamikul programmeerimiskeeltel on tööriistad muutujate hõlpsaks teisendamiseks JSON-stringideks ja vastupidi.

    JSON-stringi loomine muutujast

    JavaScriptil on sisseehitatud meetod JSON.stringify(), mis võtab muutuja ja tagastab selle sisu esindava JSON-stringi. Näiteks loome JavaScripti objekti, mis sisaldab meie näite tellimusteavet, ja seejärel loome sellest JSON-string:

    var cart = ( "tellimuse ID": 12345, "shopperName": "Vanya Ivanov", "shopperEmail": " [e-postiga kaitstud]", "contents": [ ( "productID": 34, "productName": "Super product", "quantity": 1 ), ( "productID": 56, "productName": "Miracle product", "quantity": 3 ) ], "orderCompleted": true ); märguanne (JSON.stringify(cart));

    See kood annab:

    Pange tähele, et meetod JSON.stringify() tagastab JSON-stringi ilma tühikuteta. Seda on raskem lugeda, kuid see on võrgu kaudu edastamiseks kompaktsem.

    JavaScriptis on JSON-stringi sõelumiseks mitu võimalust, kuid kõige turvalisem ja usaldusväärsem on kasutada sisseehitatud meetodit JSON.parse(). See võtab vastu JSON-stringi ja tagastab andmeid sisaldava JavaScripti objekti või massiivi. Näiteks:

    var jsonString = " \ ( \ "tellimuse ID": 12345, \ "shopperName": "Vanya Ivanov", \ "ostleja e-post": " [e-postiga kaitstud]", \ "sisu": [ \ ( \ "toote ID": 34, \ "tootenimi": "Super toode", \ "kogus": 1 \), \ ( \ "toote ID": 56, \ "tootenimi": "Imekaup", \"kogus": 3\ ) \ ], \"tellimusLõpetatud": tõsi \ ) \"; var cart = JSON.parse(jsonString); hoiatus(korv.ostlejaE-post); hoiatus(korv.sisu.tooteNimi);

    Lõime muutuja jsonString, mis sisaldab meie näidisjärjestuse JSON-stringi. Seejärel edastame selle stringi meetodile JSON.parse(), mis loob JSON-i andmeid sisaldava objekti ja salvestab selle ostukorvi muutujasse. Jääb üle vaid kontrollida, kuvades sisumassiivi objekti shopperEmail atribuudid ja productName.

    Selle tulemusena saame järgmise väljundi:

    Reaalses rakenduses saab teie JavaScripti kood tellimuse JSON-stringina AJAX-i vastuses serveri skriptilt, edastab stringi meetodile JSON.parse() ja kasutab seejärel andmeid selle kuvamiseks kasutaja lehel.

    JSON.stringify() ja JSON.parse() omavad muid võimalusi, näiteks tagasihelistamisfunktsioonide kasutamine teatud andmete kohandatud teisendamiseks. Sellised valikud on väga kasulikud erinevate andmete teisendamiseks õigeteks JavaScripti objektideks.

    JSON-stringiga töötamine PHP-s

    PHP-l, nagu JavaScriptil, on JSON-stringidega töötamiseks sisseehitatud funktsioonid.

    JSON-stringi loomine PHP muutujast

    Funktsioon json_encode() võtab PHP muutuja ja tagastab JSON-stringi, mis esindab muutuja sisu. Siin on meie tellimuse näide, mis on kirjutatud PHP-s:

    See kood tagastab täpselt sama JSON-stringi nagu JavaScripti näites:

    ("orderID":12345,"shopperName":"Vanya Ivanov","shopperEmail":" [e-postiga kaitstud]","contents":[("tooteID":34,"tooteNimi":"Super toode","quantity":1),("tooteID":56,"tooteNimi":"imetoode","kogus": 3)],"orderCompleted":true)

    Päris rakenduses saadab teie PHP-skript selle JSON-stringi osana AJAX-i vastusest brauserisse, kus JavaScripti kood, kasutades meetodit JSON.parse(), sõelub selle tagasi muutujaks, mis kuvatakse kasutaja lehel. .

    Funktsiooni json_encode() teise argumendina saate edastada erinevaid lippe. Nende abiga saate muuta muutujate sisu JSON-stringiks kodeerimise põhimõtteid.

    Looge JSON-stringist muutuja

    JSON-stringi PHP-muutujaks teisendamiseks kasutage meetodit json_decode(). Asendame oma JavaScripti näite JSON.parse() meetodiga PHP koodiga:

    Nagu JavaScripti puhul, toodab see kood:

    [e-postiga kaitstud] Ime toode

    Vaikimisi tagastab funktsioon json_decode() JSON-objektid PHP-objektidena. Seal on stdClassi klassi üldised PHP-objektid. Sellepärast kasutame ülaltoodud näites objekti omadustele juurdepääsuks ->.

    Kui vajate seotud PHP-massiivina JSON-objekti, peate funktsiooni json_decode() teise argumendina edastama tõese. Näiteks:

    $käru = json_decode($jsonString, tõsi); echo $cart["shopperEmail"] . "
    "; kaja $cart["sisu"]["tootenimi"] . "
    ";

    See kood annab sama väljundi:

    [e-postiga kaitstud] Ime toode

    Funktsioonile json_decode() saate edastada ka muid argumente, et määrata rekursiooni sügavus ja suurte täisarvude käsitlemine.

    Järeldus

    Kuigi JSON-i on lihtne mõista ja kasutada, on see väga kasulik ja paindlik tööriist andmete edastamiseks rakenduste ja arvutite vahel, eriti AJAX-i kasutamisel. Kui plaanite arendada AJAX-i rakendust, siis pole kahtlust, et JSON-ist saab teie töökojas oluline tööriist.

    ) ja serverite endi vahel (HTTP tarkvara liidesed). JSON-vorming sobib hästi ka keerukate dünaamiliste struktuuride salvestamiseks relatsiooniandmebaasides või failivahemällu.

    Kuna JSON on JavaScripti süntaksi alamhulk, saab selle sisseehitatud funktsiooni eval() abil kiiresti deserialiseerida. Lisaks on võimalik sisestada täisfunktsionaalseid JavaScripti funktsioone. PHP-s on alates versioonist 5.2.0 tuumas JSON-i tugi funktsioonide json_decode() ja json_encode() kujul, mis ise teisendavad JSON-i andmetüübid vastavateks PHP tüüpideks ja vastupidi.

    Süntaks

    JSON on üles ehitatud kahele struktuurile:

    • Võtme/väärtuste paaride komplekt. Erinevates keeltes rakendatakse seda järgmiselt objekt, kirje , struktuur , sõnastik , räsitabel , võtmetega loend või assotsiatiivne massiiv . Võti saab olla ainult string, väärtus võib olla ainult mis tahes kujul.
    • Nummerdatud väärtuste kogum. Paljudes keeltes rakendatakse seda järgmiselt massiivi, vektor, loend või jada.

    Need on universaalsed andmestruktuurid. Teoreetiliselt toetavad kõik kaasaegsed programmeerimiskeeled neid ühel või teisel kujul. Kuna JSON-i kasutatakse andmete vahetamiseks erinevate programmeerimiskeelte vahel, on mõistlik see nendele struktuuridele üles ehitada.

    JSON-is kasutatakse järgmisi vorme:

    • Objekt on järjestamata nime/väärtuste paaride kogum, mis on ümbritsetud lokkis sulgudega ( ). Nime ja väärtuse vahel on sümbol ": " , ja nime/väärtuse paarid eraldatakse komadega.
    • Massiiv (ühemõõtmeline) on väärtuste kogum, millel on seerianumbrid (indeksid). Massiiv on ümbritsetud nurksulgudega. Väärtused eraldatakse komadega.
    • Väärtus võib olla rida jutumärkides, number, väärtus tõsi või vale, objektiks, massiivi, või väärtus null. Neid struktuure saab üksteise sisse pesastada.
    • String on järjestatud kogum nullist või enamast Unicode'i märgist, mis on ümbritsetud jutumärkidega, kasutades kaldkriipsu paojärjestusi. Märgid on kujutatud lihtsa stringina.
    • Nimi on string.

    Liin väga sarnane stringiga keeltes ja Javas. Number samuti väga sarnane C- või Java-numbriga, välja arvatud see, et kasutatakse ainult kümnendvormingut. Tühikuid saab sisestada mis tahes kahe märgi vahele.

    Järgmine näide näitab isikut kirjeldava objekti JSON-i esitust. Objektil on string ees- ja perekonnanime väljad, aadressi kirjeldav objekt ja telefoninumbrite loendit sisaldav massiiv.

    ( "eesnimi" : "Ivan" , "perenimi" : "Ivanov" , "aadress" : ( "tänava aadress" : "Moskovskoe sh., 101, apt. 101" , "linn" : "Leningrad" , "postiindeks" : 101101 ) , "phoneNumbers" : [ "812 123-1234" , "916 123-4567" ] )

    XML-is näeks selline struktuur välja umbes selline:

    Ivan Ivanov Moskovskoe sh., 101, korter 101 Leningrad 101101 812 123-1234 916 123-4567

    812 123-1234 916 123-4567

    Võrdlus YAML-iga

    Nii funktsionaalselt kui ka süntaktiliselt on JSON YAML-i keele alamhulk. Täpsemalt ütleb YAML 1.2 spetsifikatsioon, et "iga JSON-fail on kehtiv YAML-fail". Kõige tavalisem YAML-i parser suudab töödelda ka JSON-i. Versioonile 1.2 eelnev YAML-i spetsifikatsioon ei hõlmanud JSON-i täielikult, peamiselt seetõttu, et YAML-is ei toetatud UTF-32, aga ka komaeraldaja järel oli vaja tühikut. Lisaks sisaldas JSON-i spetsifikatsioon /* */ stiili kommentaare.

    YAML-i kõige olulisem erinevus on süntaksilaiendite komplekt, millel pole JSON-is analooge:

    Relatsioon: YAML toetab relatsiooniandmeid: YAML-dokumendis saate viidata failis/voos varem esinenud ankrule. Rekursiivseid struktuure saab väljendada nii. Laiendatav: YAML toetab laiendatavaid andmetüüpe peale primitiivide (st stringid, numbrid, tõeväärtused). Plokid: YAML-is on saadaval taandega plokkide süntaks; see võimaldab kirjeldada struktureeritud andmeid ilma tarbetuid sümboleid kasutamata (igasugused sulud, jutumärgid jne).

    JSON-skeem

    JSON-i skeem on üks JSON-dokumendi struktuuri kirjeldamise keeltest. Kasutab JSON-i süntaksit. Põhineb XML Schema, RelaxNG, Kwalify kontseptsioonidel. JSON-skeem on ennast kirjeldav keel: kui seda kasutatakse, saab andmete töötlemiseks ja nende kehtivuse kirjeldamiseks kasutada samu serialiseerimis-/deserialiseerimistööriistu.

    JSON-i kasutamine Ajaxis

    Järgmine Javascripti koodi näide näitab, kuidas brauser saab kasutada XMLHttpRequesti, et taotleda serverilt JSON-vormingus objekti (programmi serveripool on välja jäetud; see peab sisaldama koodi, mis saadab andmed JSON-stringina vastuseks kasutaja päringutele url).

    Var the_object; var http_request = new XMLHttpRequest() ; http_request.open("GET", url, tõsi); http_request.send(null); http_request.onreadystatechange = function () ( if ( http_request.readyState == 4 ) ( if ( http_request.status == 200 ) ( the_object = JSON.parse ( http_request.responseText ) ; ) else ( märguanne oli probleemiga ( "There" URL." ) ; ) http_request = null ; ) ) ;

    Pange tähele, et see XMLHttpRequesti kasutamise näide ei ole kõigi brauserite jaoks universaalne (Internet Exploreril, Operal, Safaril ja Mozillal põhinevate brauserite puhul peaks koodis olema mõningaid erinevusi). XMLHttpRequesti kasutamine on piiratud sama päritolupoliitika tõttu: päringu vastuse URL peab asuma samas DNS-domeenis, kus asub vastust taotlev leht. Alternatiiviks on JSONP-lähenemine, mis hõlmab kliendi ja serveri vahel edastatava kodeeritud funktsioonikõne kasutamist, et klient saaks laadida JSON-kodeeringuga andmeid kolmanda osapoole domeenidest ja teavitada helistajat lõpetamisest, kuigi sellega kaasnevad mõned turvariskid ja täiendavad serverinõuded.

    Teise võimalusena võib lehekood kasutada elemente JSON-andmete asünkroonseks taotlemiseks või lihtsalt . Need lähenemisviisid olid tavalised enne XMLHttpRequesti laialdast toetamist.

    Sama päritolupoliitikat saate kasutada ka JSON-andmete edastamiseks dünaamiliste siltide abil, kuid see toob kaasa haavatava koodi. Ohutuma alternatiivina on soovitatud seda kasutada JSONRequest.

    Turvalisuse küsimused

    Kuigi JSON on loodud andmete edastamiseks jadavormingus, järgib selle süntaks JavaScripti süntaksit ja see tekitab mitmeid turvaprobleeme. Sageli rakendatakse välisest allikast JSON-vormingus saadud andmete töötlemiseks sellele funktsiooni eval() ilma eelneva kinnitamiseta.

    JavaScript eval()

    Kuna JSON näib olevat süntaktiliselt õige JavaScripti kooditükk, on lihtsaim viis JSON-i andmete sõelumiseks JavaScripti programmis kasutada JavaScripti avaldiste täitmiseks loodud JavaScripti funktsiooni eval(). Selle lähenemisviisi korral pole vaja täiendavaid parsereid kasutada.

    Tehnika eval() muudab süsteemi haavatavaks, kui kasutatud JSON-andmete allikat ei usaldata ( Inglise). Sellised andmed võivad olla pahatahtlikud JavaScripti koodid koodi sisestamise rünnakute jaoks ( Inglise). Seda haavatavust kasutades on võimalik andmeid varastada ja autentimist võltsida. Haavatavuse saab aga kõrvaldada, kasutades täiendavaid andmete valideerimise tööriistu. Näiteks enne eval() käivitamist saab välisest allikast saadud andmeid regulaaravaldiste abil valideerida. JSON-i defineeriv RFC soovitab kasutada järgmist koodi, et kontrollida, kas see vastab JSON-vormingule

    Var my_JSON_object = ! (/[^,:()\[\]0-9.\-+Eaeflnr-u \n\r\t]/ .test ( text.replace (/"(\\.|[^"\\] )*"/g , "" ) ) ) && eval("(" + tekst + ")" ) ;

    Funktsiooni eval() turvalisema alternatiivina on pakutud välja uus funktsioon parseJSON(), mis suudab töödelda ainult JSON-i andmeid. Seda tutvustati ECMAScripti standardi versioonis 4 ja seda kirjeldatakse artiklis "JSON: madala rasvasisaldusega alternatiiv XML-ile". See on praegu saadaval JavaScripti teegina ja lisatakse ECMAScripti viiendasse väljaandesse.

    Manustatud JSON

    Veebibrauserite viimastel versioonidel on sisseehitatud JSON-i tugi ja need suudavad seda töödelda ilma funktsiooni eval() kutsumata, mis viib kirjeldatud probleemini. JSON-i töötlemine on sel juhul tavaliselt kiirem. Nii et juunis 2009 oli järgmistel brauseritel sisseehitatud JSON-tugi:

    Vähemalt viis populaarset JavaScripti teeki kasutavad inline JSON-i, kui need on saadaval:

    Domeenidevahelise taotluse võltsimine

    JSON-i kehv kasutamine muudab saidid haavatavaks saidiülese päringu võltsimise (CSRF või XSRF) suhtes. Kuna märgend lubab kasutada allikat, mis ei kuulu seda kasutava ressursiga samasse domeeni, võimaldab see JSON-andmete varjus koodi käivitada suvalise lehe kontekstis, võimaldades paroolide või paroolide kompromiteerimist. muu tundlik teave teisele saidile volitatud kasutajate kohta.

    See näib olevat probleem ainult siis, kui JSON-andmed sisaldavad tundlikku teavet, mida kolmas osapool võib kahjustada, ja kui server tugineb ühe päritoluga poliitikale ( Inglise), blokeerides juurdepääsu andmetele välise päringu tuvastamisel. See ei ole probleem, kui server määrab päringu kehtivuse, esitades andmeid ainult siis, kui need on õiged. Selle kindlakstegemiseks ei saa kasutada HTTP-küpsiseid. HTTP-küpsiste eksklusiivset kasutamist kasutatakse saidiülese päringu võltsimiseks.

    JSONP ja JSONPP

    JSONP (JSON Padding) või "JSON koos täidisega" on JSON-i laiendus, kui sisendargumendina on määratud tagasihelistamisfunktsiooni nimi.

    Tehnoloogia põhineb asjaolul, et brauseri turvapoliitika lubab märgendi abil pääseda juurde ka muudele serveritele peale serveri, kust leht laaditi.

    Ilma JSONP-tehnoloogiat kasutamata (st kasutades ainult JSON-i andmete kodeerimist) saab server ainult andmeid tagastada. Näiteks nii:

    ("paber": "A4", "arv": 5)

    Kuid need on ainult andmed ja ei saa brauserit mõjutada.

    JSONP-tehnikat kasutades edastatakse tagasihelistamisfunktsiooni nimi kõneliini (GET) kolmanda osapoole serverile:

    Siin sisaldab parameeter jsonp tagasihelistamisfunktsiooni parseResponse nime.

    Nüüd saab välisserver example.com tagastada järgmise koodi:

    ParseResponse(( "paber" : "A4" , "count" : 5 ) )

    Kood kutsub nüüd esimese domeeni JavaScripti funktsiooni.

    Idee pakuti algselt välja MacPythoni ajaveebis 2005. aastal ja seda kasutavad praegu paljud Web 2.0 rakendused, nagu Dojo Toolkit Applications, Google Toolkit Applications ja zanox Web Services. Selle protokolli täiendavaid laiendusi on pakutud täiendavate argumentide lisamiseks, näiteks JSONPP tugi S3DB veebiteenustele.

    Kuna JSONP kasutab skriptimärgendeid, on kõned sisuliselt maailmale avatud. Sel põhjusel ei pruugi JSONP tundlike andmete salvestamiseks sobida.

    Kaugsaitide skriptimärgendi lubamine võimaldab neil saidil mis tahes sisu edastada. Kui kaugsaidil on turvaauke, mis võimaldavad Javascripti süstimist, võivad need mõjutada ka algset saiti.

    JSONPP (parameterized JSON koos polsterdusega) Parameterized JSON koos täidisega – JSONP idee arendamine

    JSONPP sisaldab lähte-URL-i, JSON-andmeid töötleva funktsiooni nime, rida eval jaoks pärast andmete saamist ja rida eval jaoks pärast andmete töötlemise lõpetamist:

    JSON_call(SRC, JSONP, JSONPP, ONLOAD) ;

    lõpuks pöördub ümber

    Ans = JSONP(SRC) ( eval(JSONPP(ans) ) ; eval(ONLOAD) ; )

    Üldiselt ei ole parameetrite arv JSONPP idee enda jaoks oluline. SRC-st, JSONP-st, JSONPP-st (ja nende töötlemisest serveri poolel ja seejärel kliendi poolel) piisab, et see oleks JSONPP.

    Vaatame S3DB teenusega töötamise näidet.

    Funktsioon s3db_jsonpp_call(src, next_eval) ( var call = "call_" + Math .random () .toString () .replace (/\./g, "" ) ; var headID = document.getElementsByTagName ("head") [ 0 ] ; var script = document.createElement ("skript" ) ; script.id = kõne; script.type = "text/javascript" ; // polsterdatud parameetritega json src = src+ "&format=json&jsonp=s3db_jsonpp&jsonpp=" + next_eval+ "&onload=remove_element_by_id("" + script.id + "")" ; script.src = src; headID.appendChild (script) ; // otsi vastuse ) funktsioon s3db_jsonpp(ans, jsonpp) ( eval(jsonpp) ; tagasta ans ; ) funktsioon remove_element_by_id(id) ( var e = document.getElementById (id) ; e.parentNode .removeChild (e) ; return false ; )

    Näites loob funktsioon s3db_jsonpp_call() peaosas DOM-is skriptielemendi, mille src vastab JSONPP-kutsele.

    Pärast serverilt vastuse saamist kutsutakse välja s3db_jsonpp() - see edastatakse kõne parameetrites, nagu see JSONP reeglite järgi peaks olema.

    Sees s3db_jsonpp() käivitub eval(jsonpp) ja tagastab väärtuse ans.

    Funktsiooni eval(onload) kutsumine viib käsu remove_element_by_id() käivitamiseni koos loodud skripti ID-ga peas ja lõpuks selle kustutamiseni, kuna seda nagunii ei kasutata, kuna näites olev ID genereeriti juhuslikult kohe skripti alguses. funktsioon s3db_jsonpp_call(). See kõne on serveri vastuses.

    Objektide viited

    JSON-standard ei toeta objektiviiteid, kuid Dojo Toolkit näitab, kuidas standardne JSON saab selliseid viiteid täiendavate tavade abil toetada. Eelkõige toetab moodul dojox.json.ref mitut tüüpi linke, sealhulgas ring-, mitme-, dokumentidevahelisi ja laisklinke.

    Vaata ka Märkused
  • YAML ei ole märgistuskeel (YAML™) versioon 1.2 (inglise keel) . - Tööprojekt 2008-05-11 (ligipääsmatu link - lugu) Vaadatud 24. septembril 2009.
  • . RedHanded (07. aprill 2005). Vaadatud 25. september 2012.
  • Json.Com JSON-i skeemi ettepanek (ligipääsmatu link - lugu)
  • RFC 4627
  • JSON: XML-i rasvavaba alternatiiv. Arhiveeritud
  • json2.js (inglise) . Arhiveeritud originaalist 12. veebruaril 2012. Vaadatud 24. septembril 2009.
  • Manustatud JSON-i kasutamine.
  • Manustatud JSON IE8-sse. Arhiveeritud originaalist 12. veebruaril 2012.
  • Veebispetsifikatsioone toetab Opera Presto 2.5 (inglise keel) (10. märts 2010). Arhiveeritud originaalist 12. veebruaril 2012. Vaadatud 29. märtsil 2010.
  • ES 3.1 JSON-objekti juurutamine.
  • Pilet #4429lang=en . Arhiveeritud originaalist 12. veebruaril 2012.
  • Pilet nr 4429 (22. mai 2009). Arhiveeritud originaalist 12. veebruaril 2012. Vaadatud 3. juulil 2009.
  • Pilet #8111lang=en . Arhiveeritud originaalist 12. veebruaril 2012.
  • MooTools Core & More 1.3.1. Arhiveeritud originaalist 12. veebruaril 2012.
  • YUI 2: JSON-i utiliit (1. september 2009). Arhiveeritud originaalist 12. veebruaril 2012. Vaadatud 22. oktoobril 2009.
  • Õppige JSON-i (7. aprill 2010). Arhiveeritud originaalist 12. veebruaril 2012. Vaadatud 7. aprillil 2010.
  • Jeremy Grossman Täiustatud ründetehnikad Gmaili kasutavate veebirakenduste vastu. WhiteHat turvalisus. Arhiveeritud originaalist 12. veebruaril 2012. Vaadatud 23. septembril 2009.
  • alates __tuleviku__ import * » Remote JSON - JSONP . Bob.pythonmac.org. Arhiveeritud originaalist 12. veebruaril 2012. Vaadatud 8. septembril 2008.
  • Almeida, Jonas (11. juuni 2008). "JSON, JSONP, JSONPP? "(S3DB). Vaadatud 26.04.2009.
  • RIAspot JSON P saidiülese XHR-i jaoks (juurdepääsmatu link - lugu)
  • JSON-i viitamine Dojos. Arhiveeritud originaalist 12. veebruaril 2012.
  • Lingid
    • Ametliku formaadiga koduleht vene keeles
    • json.js, json2.js on Douglas Crockfordi välja töötatud teek JavaScriptis JSON-andmetega töötamiseks. Laiendab objekti meetodiga toJSONString, mis on seejärel olemas igas objektis, ja teisendab selle JSON-vormingus stringiks.
    • json-rpc.org (inglise)
    Dokumendi märgistuskeeledKontori dokumendid

    Õppetund, mis uurib, mis on JSON ja millised on selle eelised teiste andmevormingute ees.

    JSON-i kontseptsioon

    JSON (JavaScript Object Notation) on tekstivorming andmete esitamiseks JavaScripti objekti tähistuses.

    See tähendab, et JSON-i andmed on korraldatud samamoodi nagu JavaScripti objektis. Kuid erinevalt viimasest on JSON-i salvestusvormingul mõned funktsioonid, mida arutatakse veidi hiljem.

    JSON-i kasutatakse tavaliselt koos AJAX-iga, et server saaks edastada andmed mugaval kujul JavaScripti skripti, mis kuvab need seejärel lehel.

    JSON-vormingu struktuur

    Igaüks, kes tunneb JavaScriptis objektide loomise protsessi, ei näe JSON-vormingu struktuuris midagi uut. Seda seetõttu, et JSON-i struktuur järgib teatud piirangutega JavaScripti objekti struktuuri.

    Lihtsam on pidada JSON-i kui elementidest koosnevat konteinerit. Iga element sellises konteineris on kindel struktuuriüksus, mis koosneb võtmest ja väärtusest.

    Sel juhul on väärtus võtmega otseselt seotud ja moodustab nn võtme-väärtuse paari. Sellise objekti väärtuse saamiseks peate teadma selle võtit. Süntaktiliselt kirjutatakse sellised andmed JSON-i järgmiselt:

    Ülaltoodud kirjes näete, et võti on väärtusest eraldatud kooloniga (:). Sel juhul tuleb JSON-objekti võti lisada jutumärkidesse. See on JSON-i esimene funktsioon, mis eristab seda JavaScripti objektist. Sest JavaScripti objektis ei pea võtit (objekti atribuut) olema jutumärkides.

    Näiteks objekti struktuur, mis kehtib JavaScripti vaatepunktist, kuid ei kehti JSON-i vaatepunktist:

    Var isik = ( nimi: "Ivan"; ) // JavaScripti objekt

    Hoiatus: proovige anda võtmele nimi, et mitte raskendada juurdepääsu andmetele, s.t. Nime koostamisel on eelistatav järgida kaameli tähistust või kasutada sõnade ühendamiseks alljoont ("_").

    JSON-i võtmeväärtuse saab kirjutada ühes järgmistest vormingutest: string, arv, objekt, massiiv, tõeväärtus (tõene või väär), null (JavaScripti eriväärtus).

    See on JSON-i teine ​​piirang, kuna JavaScripti objekt võib sisaldada mis tahes andmetüüpi, sealhulgas funktsiooni.

    Var person = ( "nimi" : "Ivan"; "setName": function() ( console.log(this.name); ) ) // JavaScripti objekt

    Ühe elemendi (võtmeväärtuste paari) teisest eraldamiseks kasutage koma (,) märki.

    Näiteks kaaluge JSON-i, mis koosneb erinevatest andmetüüpidest.

    Tähelepanu: JSON-i andmevorming ei luba oma struktuuris kommentaare.

    JSON-iga töötamine JavaScriptis

    Erinevalt JavaScripti objektist on JSON string.

    Näiteks:

    // Näiteks personData muutuja sisaldab stringi, mis on JSON var personData = "("nimi":"Ivan","vanus":37,"ema":("nimi":"Olga","vanus": 58),"lapsed":["Maša","Igor","Tanya"],"abielus": tõsi,"koer": null)";

    JSON-iga töötamine toimub tavaliselt kahes suunas:

  • Parsimine on JSON-i sisaldava stringi tõlkimine JavaScripti objektiks.
  • Teisendage JavaScripti objekt JSON-stringiks. Teisisõnu toimib see toiming sõelumisele vastupidiselt.
  • JSON-i sõelumine

    JSON-i sõelumine, st. JSON-stringi tõlkimine JavaScripti objektiks toimub meetodi eval() või parse() abil.

    Kasutades meetodit eval()

    // isikumuutuja on JavaScripti objekt, mis saadakse JSON-koodi (stringi) käivitamisel var person= eval("("+personData+")");

    Kasutades meetodit JSON.parse()

    // isikumuutuja on JavaScripti objekt, mis saadakse JSON-stringi sõelumisel var person = JSON.parse(personData);

    JavaScripti objekti teisendamine JSON-stringiks

    JavaScripti objekti tõlkimine JSON-stringiks toimub meetodi JSON.stringify() abil. See meetod toimib vastupidiselt meetodile JSON.parse().

    Var personString = JSON.strigify(person);

    JSON-vormingu eelised

    JSON-i andmevormingul on järgmised eelised.

    • mugavad ja kiirelt kasutatavad meetodid, mis on loodud JSON-stringi teisendamiseks (parsimiseks) JavaScripti objektiks ja tagasi;
    • selge ja lihtne andmestruktuur;
    • väga väike suurus võrreldes teiste andmevormingutega (nt XML). Seda seetõttu, et JSON-vorming sisaldab minimaalset võimalikku vormingut, st. Selle kirjutamisel kasutatakse vaid üksikuid erimärke. See on väga oluline eelis, sest... JSON-vormingus esitatud andmed laaditakse kiiremini kui muudes vormingutes.

    Tänu sellele, et sellel vormingul on nii palju eeliseid, on seda hakatud kasutama mitte ainult JavaScriptis, vaid ka paljudes teistes keeltes, nagu C, Ruby, Perl, Python, PHP jne.

    JSON- ja XML-vormingute võrdlus

    JSON-vormingul on XML-vormingu ees järgmised eelised.

  • Mõne andmeedastuse puhul on JSON-i suurus oluliselt väiksem kui XML-i suurus.
  • JSON-il on paremad teisendusmeetodid JavaScripti andmestruktuurideks kui XML-il.
  • JSON-i on lihtsam luua kui XML-i.
  • Pärast sõelumist JSON-andmetega töötamine toimub JavaScripti objektina.

    //JSON var personData = "("nimi":"Ivan","vanus":37,"ema":("nimi":"Olga","vanus":58),,"lapsed":["Masha" ""Igor","Tanya"],"abielus": tõsi,"koer": null)"; //JavaScripti objekt isik var person = JSON.parse(personData);

    Vaatame põhipunkte:

    //võtme (omaduse) nime isiku.nimi väärtused; isik["nimi"]; //saake objektis ema isik.ema.nimi asuva võtme (omaduse) nime väärtused; //kustutage vanuseelement delete(person.age) //lisage (või värskendage) võti (omadus) person.eye = "pruun"; //massiividega töötamisel tuleb kasutada spetsiaalselt massiividega töötamiseks mõeldud meetodeid //eemaldada massiivist 1 element (splice meetod) person.children.splice(1,1) //lisada massiivi element (tõukemeetod) ) isik.lapsed.tõuge("Katya");

    Objekti elementide itereerimiseks võite kasutada tsüklit for..in:

    For (avatakse isiklikult) ( if (person.hasOwnProperty(key)) ( //võti = võti //väärtus = person console.log("Võti = " + võti); console.log("Väärtus = " + isik) ; ) // kui isikuobjektil on võti (kui isikul on võtmeomadus) ) // itereerige läbi kõik objekti võtmed (atribuudid)

    Massiivi elementide itereerimiseks võite kasutada järgmist tsüklit:

    For (var i=0; i

    Kõige tavalisem probleem, mis takistab kasutajatel seda faili avamast, on valesti määratud programm. Selle parandamiseks Windows OS-is peate failil paremklõpsama, kontekstimenüüs viima hiirekursori üksuse „Ava koos” kohal ja valima rippmenüüst „Vali programm...”. Selle tulemusena näete arvutisse installitud programmide loendit ja saate valida sobiva. Samuti soovitame märkida ruut valiku „Kasuta seda rakendust kõigi JSON-failide jaoks” kõrval.

    Teine probleem, millega meie kasutajad üsna sageli kokku puutuvad, on see, et JSON-fail on rikutud. Selline olukord võib tekkida paljudel juhtudel. Näiteks: fail laaditi alla mittetäielikult serveri vea tõttu, fail oli algselt kahjustatud jne. Selle probleemi lahendamiseks kasutage ühte järgmistest soovitustest:

    • Proovige leida vajalik fail mõnest muust Interneti-allikast. Teil võib olla õnne sobivama versiooni leidmisel. Google'i otsingu näide: "Faili failitüüp:JSON" . Lihtsalt asenda sõna "fail" soovitud nimega;
    • Paluge neil saata teile originaalfail uuesti, see võib olla edastamise ajal kahjustatud;