Daugiau
Kas yra JSON ir kodėl turėčiau jį naudoti?
Žiūrėjau į Vikipediją ir "Google" ir perskaičiau oficialią dokumentaciją, bet vis dar nesupratau, kas yra JSON ir kodėl jį naudoju.
Jau kurį laiką kuriu taikomąsias programas naudodamas PHP, MySQL ir Javascript / HTML, ir jei JSON gali kažkuo palengvinti mano gyvenimą, patobulinti mano kodą arba vartotojo sąsają, norėčiau apie tai sužinoti. Ar kas nors galėtų man pateikti glaustą paaiškinimą?
524
3
JSON (JavaScript Object Notation) - tai lengvas formatas, naudojamas duomenų mainams. Jis pagrįstas "JavaScript" kalbos poaibiu (objektų kūrimo būdu "JavaScript"). Kaip teigiama MDN, kai kurie JavaScript nėra JSON, o kai kurie JSON nėra JavaScript. Pavyzdys, kur tai naudojama, yra žiniatinklio paslaugų atsakymai. 'senaisiais' laikais žiniatinklio paslaugos naudojo XML kaip pagrindinį duomenų formatą atgaliniams duomenims perduoti, tačiau nuo tada, kai atsirado JSON (*JSON formatas nurodytas Douglaso Crockfordo RFC 4627), jam teikiama pirmenybė, nes jis yra daug lengvesnis**. Daugiau informacijos galite rasti oficialioje JSON interneto svetainėje. JSON remiasi dviem struktūromis:
Sutvarkytas verčių sąrašas. Daugumoje kalbų jis realizuojamas kaip masyvas, vektorius, sąrašas arba seka.
JSON struktūra
Čia pateikiamas JSON duomenų pavyzdys:
JSON JavaScript kalba
JSON (Javascript kalba) yra eilutė! Žmonės dažnai mano, kad visi "Javascript" objektai yra JSON ir kad JSON yra "Javascript" objektas. Tai neteisinga. Javascript sistemoje
var x = {x:y}
yra ne JSON, tai yra Javaskripto objektas. Šie du dalykai nėra tapatūs. JSON atitikmuo (išreikštas Javascript kalba) būtųvar x = '{"x":"y"}'
.x
yra string tipo objektas, o ne savarankiškas objektas. Norėdami paversti šį objektą visaverčiu Javascript objektu, pirmiausia turite jį išnarplioti,var x = JSON.parse('{"x":"y"}');
,x
dabar yra objektas, bet tai jau ne JSON. Žr. Javascript object Vs JSONDirbant su JSON ir "JavaScript", gali kilti pagunda naudoti funkciją
eval
grįžtamojo ryšio grąžinamam rezultatui įvertinti, tačiau to daryti nesiūloma, nes yra du simboliai (U+2028 & amp; U+2029), galiojantys JSON, bet ne "JavaScript" (daugiau apie tai skaitykite čia). Todėl visada reikia stengtis naudoti Crockford'o scenarijų, kuris prieš įvertindamas JSON patikrina, ar JSON yra galiojantis. Nuorodą į scenarijaus paaiškinimą rasite čia, o čia yra tiesioginė nuoroda į js failą. Šiais laikais kiekviena pagrindinė naršyklė turi savą šio veiksmo realizaciją. Pavyzdys, kaip naudoti JSON analizatorių (su json iš pirmiau pateiktos kodo ištraukos):JSON analizatorius taip pat siūlo dar vieną labai naudingą metodą
stringify
. Šis metodas priima "JavaScript" objektą kaip parametrą ir išveda JSON formato eilutę. Tai naudinga, kai norite siųsti duomenis atgal į serverį:Du pirmiau minėti metodai (
parse
irstringify
) taip pat priima antrąjį parametrą, kuris yra funkcija, kuri bus iškviesta kiekvienam raktui ir vertei kiekviename galutinio rezultato lygyje, ir kiekviena vertė bus pakeista jūsų įvestos funkcijos rezultatu. (Daugiau apie tai čia) Btw, visiems, kurie mano, kad JSON skirtas tik "JavaScript", perskaitykite šį įrašą, kuriame paaiškinama ir patvirtinama priešingai.Nuorodos
JSON yra "JavaScript Object Notation". Tai daug kompaktiškesnis būdas perduoti duomenų rinkinius tinklo ryšiais, palyginti su XML. Siūlau JSON naudoti visose į AJAX panašiose programose, kuriose XML būtų rekomenduojamas variantas. Dėl XML žodžių gausos pailgės atsisiuntimo laikas ir padidės duomenų srauto pralaidumo sąnaudos ($$$). Tokį patį efektą galite pasiekti naudodami JSON, o jo žymėjimas beveik išimtinai skirtas tik patiems duomenims, o ne pagrindinei struktūrai.
bendras trumpas atsakymas: jei duomenų užklausoms atlikti naudojate AJAX, galite lengvai siųsti ir grąžinti objektus kaip JSON eilutes. Turimi "Javascript" plėtiniai palaiko visų tipų "JavaScript" skambučius toJSON(), skirtus duomenims siųsti į serverį AJAX užklausoje. AJAX atsakymai gali grąžinti objektus kaip JSON eilutes, kurias galima konvertuoti į "Javascript" objektus paprastu "eval" iškvietimu, pvz., jei AJAX funkcija someAjaxFunctionCallReturningJson grąžino
galite parašyti Javascript
JSON taip pat gali būti naudojamas žiniatinklio paslaugų apkrovoms ir t. t., tačiau jis tikrai patogus AJAX rezultatams.