de-vraag
  • Otázky
  • Značky
  • Používatelia
Oznámenia
Odmeny
Registrácia
Po registrácii budete informovaní o odpovediach a komentároch na vaše otázky.
Prihlásiť sa
Ak už máte konto, prihláste sa a skontrolujte nové oznámenia.
Za pridané otázky, odpovede a komentáre budú udelené odmeny.
Viac na
Zdroj
Upraviť
 Ben
Ben
Question

Čo je JSON a prečo by som ho mal používať?

Pozeral som sa na wikipédiu, googlil som a čítal oficiálnu dokumentáciu, ale stále som sa nedostal do bodu, kedy by som skutočne pochopil, čo je JSON a prečo by som ho mal používať.

Už nejaký čas vytváram aplikácie pomocou PHP, MySQL a Javascriptu/HTML a ak mi JSON môže uľahčiť život, zlepšiť kód alebo používateľské rozhranie, rád by som o tom vedel. Môže mi to niekto stručne vysvetliť?

524 2008-12-20T20:19:11+00:00 3
 lev
lev
Edited question 9 apríl 2014 в 11:02
Programovanie
json
This question has 1 odpoveď in English, to read them log in to your account.
Solution / Answer
Andreas Grech
Andreas Grech
20 december 2008 в 8:25
2008-12-20T20:25:37+00:00
Viac na
Zdroj
Upraviť
#8703504

JSON (JavaScript Object Notation) je odľahčený formát, ktorý sa používa na výmenu dát. Je založený na podmnožine jazyka JavaScript (spôsob, akým sú objekty v JavaScripte vytvorené). Ako sa uvádza v MDN, niektoré jazyky JavaScript nie sú JSON a niektoré JSON nie sú JavaScript. Príkladom, kde sa to používa, sú odpovede webových služieb. V 'starých' časoch webové služby používali XML ako primárny dátový formát na prenos spätných údajov, ale odkedy sa objavil JSON (Formát JSON je špecifikovaný v RFC 4627 Douglasa Crockforda), je to preferovaný formát, pretože je oveľa ľahší Mnoho ďalších informácií nájdete na oficiálnej webovej stránke JSON. JSON je postavený na dvoch štruktúrach:

  • Kolekcia dvojíc meno/hodnota. V rôznych jazykoch sa realizuje ako objekt, záznam, štruktúra, slovník, hašovacia tabuľka, kľúčovaný zoznam alebo asociatívne pole.
  • Usporiadaný zoznam hodnôt. Vo väčšine jazykov sa realizuje ako pole, vektor, zoznam alebo sekvencia.

    Štruktúra JSON



    Schéma objektov JSON

    JSON Array diagram

    JSON Value diagram

    JSON String diagram

    JSON Number diagram

    Tu je príklad údajov JSON:

{
     "firstName": "John",
     "lastName": "Smith",
     "address": {
         "streetAddress": "21 2nd Street",
         "city": "New York",
         "state": "NY",
         "postalCode": 10021
     },
     "phoneNumbers": [
         "212 555-1234",
         "646 555-4567"
     ]
 }

JSON v jazyku JavaScript

JSON (v Javascripte) je reťazec! Ľudia často predpokladajú, že všetky objekty v Javascripte sú JSON a že JSON je objekt v Javascripte. To je nesprávne. V Javascripte var x = {x:y} nie je jazyk JSON, ale objekt Javascriptu. Tieto dve veci nie sú totožné. Ekvivalent JSON (reprezentovaný v jazyku Javascript) by bol var x = '{"x":"y"}'. x je objekt typu string, nie samostatný objekt. Ak ho chcete premeniť na plnohodnotný objekt Javascriptu, musíte ho najprv analyzovať, var x = JSON.parse('{"x":"y"}');, x je teraz objekt, ale už to nie je JSON. Pozri Javascript object Vs JSON

Pri práci s JSON a JavaScriptom môžete byť v pokušení použiť funkciu eval na vyhodnotenie výsledku vráteného v spätnom volaní, ale to sa neodporúča, pretože existujú dva znaky (U+2028 & U+2029) platné v JSON, ale nie v JavaScripte (viac o tom tu). Preto sa treba vždy pokúsiť použiť Crockfordov'skript, ktorý pred vyhodnotením skontroluje, či je JSON platný. Odkaz na vysvetlenie skriptu nájdete tu a tu je priamy odkaz na súbor js. Každý hlavný prehliadač má v súčasnosti svoju vlastnú implementáciu pre túto funkciu. Príklad použitia analyzátora JSON (s json z vyššie uvedeného úryvku kódu):

//The callback function that will be executed once data is received from the server
var callback = function (result) {
    var johnny = JSON.parse(result);
    //Now, the variable 'johnny' is an object that contains all of the properties 
    //from the above code snippet (the json example)
    alert(johnny.firstName + ' ' + johnny.lastName); //Will alert 'John Smith'
};

Parser JSON ponúka aj ďalšiu veľmi užitočnú metódu stringify. Táto metóda prijíma ako parameter objekt JavaScript a ako výstup vráti reťazec vo formáte JSON. To je užitočné, keď chcete odoslať údaje späť na server:

var anObject = {name: "Andreas", surname : "Grech", age : 20};
var jsonFormat = JSON.stringify(anObject);
//The above method will output this: {"name":"Andreas","surname":"Grech","age":20}

Dve vyššie uvedené metódy (parse a stringify) prijímajú aj druhý parameter, ktorým je funkcia, ktorá bude volaná pre každý kľúč a hodnotu na každej úrovni konečného výsledku a každá hodnota bude nahradená výsledkom vami zadanej funkcie. (Viac o tom tu) Btw, pre všetkých, ktorí si myslia, že JSON je len pre JavaScript, pozrite si tento príspevok, ktorý vysvetľuje a potvrdzuje opak.

Odkazy

  • JSON.org
  • Wikipedia.
  • Json za 3 minúty (Vďaka mson)
  • Using JSON with Yahoo! Web Services (Vďaka gljivar)
  • Prevodník JSON na CSV
  • Alternatíva Prevodník JSON na CSV
  • JSON Lint (validátor JSON)
Uppercase Brands
Uppercase Brands
Edited answer 30 marec 2018 в 8:20
634
0
 Nolte
Nolte
20 december 2008 в 8:27
2008-12-20T20:27:33+00:00
Viac na
Zdroj
Upraviť
#8703505

JSON je JavaScript Object Notation. V porovnaní s XML je to oveľa kompaktnejší spôsob prenosu súborov údajov cez sieťové spojenia. Navrhujem, aby sa JSON používal vo všetkých aplikáciách podobných AJAXu, kde by sa inak odporúčala možnosť XML. Rozsiahlosť XML predĺži čas sťahovania a zvýši spotrebu šírky pásma ($$$). Rovnaký efekt môžete dosiahnuť pomocou JSON a jeho značkovanie sa venuje takmer výlučne samotným údajom a nie základnej štruktúre.

16
0
Steven  A. Lowe
Steven A. Lowe
20 december 2008 в 8:34
2008-12-20T20:34:49+00:00
Viac na
Zdroj
Upraviť
#8703506

bežná krátka odpoveď je: ak používate AJAX na zadávanie požiadaviek na údaje, môžete jednoducho odosielať a vracať objekty ako reťazce JSON. Dostupné rozšírenia pre Javascript podporujú volania toJSON() na všetkých typoch javascriptov na odosielanie údajov na server v požiadavke AJAX. Odpovede AJAX môžu vracať objekty ako reťazce JSON, ktoré možno previesť na objekty Javascript jednoduchým volaním eval, napr. ak funkcia AJAX someAjaxFunctionCallReturningJson vrátila

"{ \"FirstName\" : \"Fred\", \"LastName\" : \"Flintstone\" }"

mohli by ste v jazyku Javascript napísať

var obj = eval("(" + someAjaxFunctionCallReturningJson().value + ")");
alert(obj.FirstName);
alert(obj.LastName);

JSON sa môže použiť aj pre payload webových služieb a podobne, ale je naozaj vhodný pre výsledky AJAX.

  • Aktualizácia (o desať rokov neskôr): Používajte JSON.parse
Steven  A. Lowe
Steven A. Lowe
Edited answer 19 september 2018 в 7:42
11
0
Pridať otázku
Kategórie
Všetky
Technológia
Kultúra / Rekreácia
Život / Umenie
Veda
Profesionálne
Obchod
Používatelia
Všetky
New
Popular
1
Jasur Fozilov
Registered pred 10 hodinami
2
Zuxriddin Muydinov
Registered pred dňom
3
Денис Анненский
Registered pred 3 dňami
4
365
Registered pred týždňom
5
True Image
Registered pred týždňom
DE
EL
ES
FR
ID
IT
JA
LT
NL
PT
RU
SK
SL
TR
ZH
© de-vraag 2022
Zdroj
stackoverflow.com
na základe licencie cc by-sa 3.0 s uvedením autora