Programovanie

Čo je to JSON? Lepší formát na výmenu údajov

JavaScript Object Notation je textová reprezentácia štruktúrovaných údajov bez schémy, ktorá je založená na pároch kľúč - hodnota a usporiadaných zoznamoch. Aj keď je JSON odvodený z JavaScriptu, je podporovaný buď natívne, alebo prostredníctvom knižníc vo väčšine hlavných programovacích jazykov. JSON sa bežne, ale nie výlučne, používa na výmenu informácií medzi webovými klientmi a webovými servermi.

Za posledných 15 rokov sa JSON stal na webe všadeprítomným. Dnes je to formát voľby pre takmer všetky verejne dostupné webové služby a často sa používa aj pre súkromné ​​webové služby.

Popularita formátu JSON tiež vyústila do natívnej podpory formátu JSON mnohými databázami. Relačné databázy ako PostgreSQL a MySQL sa teraz dodávajú s natívnou podporou pre ukladanie a dopytovanie údajov JSON. Databázy NoSQL ako MongoDB a Neo4j tiež podporujú JSON, aj keď MongoDB používa v zákulisí mierne upravenú binárnu verziu JSON.

V tomto článku sa v krátkosti pozrieme na JSON a rozoberieme, odkiaľ pochádza, jeho výhody oproti XML, jeho nevýhody, kedy by ste ho mali použiť a kedy by ste mali zvážiť alternatívy. Najprv sa však ponorme do mrzutosti toho, ako JSON vyzerá v praxi.

Príklad JSON

Tu je príklad údajov kódovaných v JSON:

{

„FirstName“: „Jonathan“,

„LastName“: „Freeman“,

„LoginCount“: 4,

„IsWriter“: pravda,

„WorksWith“: [„Spantree Technology Group“, „“],

„Domáce zvieratá“: [

    {

„Name“: „Lilly“,

„Type“: „Raccoon“

    }

  ]

}

Štruktúra vyššie jasne definuje niektoré atribúty osoby. Zahŕňa meno a priezvisko, počet prihlásení osoby, či je táto osoba spisovateľ, zoznam spoločností, s ktorými osoba spolupracuje, a zoznam domácich miláčikov osoby (v tomto prípade iba jedného). Štruktúru, ako je tá hore, možno zo servera preniesť do webového prehliadača alebo mobilnej aplikácie, ktorá potom vykoná určité akcie, ako napríklad zobrazenie údajov alebo ich uloženie pre neskoršie použitie.

JSON je všeobecný dátový formát s minimálnym počtom typov hodnôt: reťazce, čísla, logické hodnoty, zoznamy, objekty a hodnota null. Aj keď je notácia podmnožinou JavaScriptu, tieto typy sú zastúpené vo všetkých bežných programovacích jazykoch, čo robí JSON dobrým kandidátom na prenos dát cez medzery jazykov.

Súbory JSON

Údaje JSON sú uložené v súboroch, ktoré končia príponou .json. V súlade s ľudsky čitateľným étosom spoločnosti JSON sú to jednoducho súbory obyčajného textu a dajú sa ľahko otvoriť a preskúmať. Ako vysvetľuje blog SQLizer, je to tiež kľúč k širšej interoperabilite JSONu, pretože takmer každý jazyk, ktorý viete pomenovať, dokáže čítať a spracovávať súbory v obyčajnom texte a ľahko sa posielajú cez internet.

Prečo by som mal používať JSON?

Aby sme pochopili užitočnosť a dôležitosť JSON, budeme musieť trochu porozumieť histórii interaktivity na webe.

Začiatkom 20. rokov sa interaktivita na webe začala transformovať. V tom čase slúžil prehliadač hlavne ako hlúpy klient na zobrazovanie informácií a server vykonal všetku tvrdú prácu s prípravou obsahu na zobrazenie. Keď používateľ klikne na odkaz alebo tlačidlo v prehľadávači, na server sa odošle žiadosť, ktorá pripraví informácie potrebné ako HTML, a prehľadávač vykreslí kód HTML ako novú stránku. Tento vzor bol pomalý a neefektívny a vyžadoval od prehliadača opätovné vykreslenie všetkého na stránke, aj keď sa zmenila iba časť stránky.

Pretože opätovné načítanie celej stránky bolo nákladné, vývojári webu hľadali novšie technológie na zlepšenie celkového používateľského zážitku. Medzitým sa schopnosť robiť webové požiadavky na pozadí počas zobrazovania stránky, ktorá bola nedávno predstavená v programe Internet Explorer 5, ukázala ako životaschopný prístup k postupnému načítaniu údajov na zobrazenie. Namiesto opätovného načítania celého obsahu stránky by kliknutie na tlačidlo obnovenia spustilo webovú požiadavku, ktorá by sa načítala na pozadí. Po načítaní obsahu bolo možné s údajmi manipulovať, ukladať ich a zobrazovať na stránke pomocou JavaScriptu, univerzálneho programovacieho jazyka v prehliadačoch.

REST vs. SOAP: Pripojenie JSON

Pôvodne sa tieto údaje prenášali vo formáte XML (príklad je uvedený nižšie) pomocou protokolu správ s názvom SOAP (Simple Object Access Protocol). XML bol ale podrobný a ťažko sa dal spravovať v JavaScripte. JavaScript už mal objekty, ktoré sú spôsobom vyjadrovania údajov v danom jazyku, takže Douglas Crockford vzal podmnožinu tohto výrazu ako špecifikáciu pre nový formát výmeny údajov a nazval ho JSON. Formát JSON bolo pre ľudí oveľa ľahšie čitateľný a analyzovateľné pre prehliadače.

V priebehu 90. rokov začala iná technológia webových služieb s názvom Representational State Transfer alebo REST predbiehať SOAP za účelom prenosu údajov. Jednou z veľkých výhod programovania pomocou rozhraní REST API je, že môžete použiť viac dátových formátov - nielen XML, ale aj JSON a HTML. Pretože vývojári webu uprednostňovali formát JSON pred formátom XML, začali uprednostňovať aj REST pred protokolom SOAP. Ako uviedol Kostyantyn Kharchenko na blogu Svitla: „V mnohých ohľadoch je úspech systému REST spôsobený formátom JSON kvôli jeho ľahkému použitiu na rôznych platformách.“

Dnes je JSON de-facto štandardom na výmenu údajov medzi webovými a mobilnými klientmi a back-end službami.

JSON vs. XML

Ako bolo uvedené vyššie, hlavnou alternatívou k formátu JSON je XML. XML je však v nových systémoch čoraz menej rozšírený a je ľahké pochopiť prečo. Nižšie je uvedená verzia údajov, ktoré ste videli vyššie, tentokrát v jazyku XML:

Jonathan

Freeman

  4

pravda

Spantree Technology Group

Lilly

medvedík čistotný

Okrem toho, že je podrobnejší (v tomto prípade presne dvakrát tak podrobný), XML zavádza pri analýze do dátovej štruktúry vhodnej pre JavaScript aj určitú nejednoznačnosť. Prevod XML na objekt JavaScript môže trvať desiatky až stovky riadkov kódu a nakoniec si vyžaduje prispôsobenie na základe analyzovaného konkrétneho objektu. Konverzia súboru JSON na objekt JavaScript vyžaduje jeden riadok kódu a nevyžaduje žiadne predchádzajúce znalosti o analyzovanom objekte.

Obmedzenia JSON

Aj keď je JSON pomerne stručný, flexibilný dátový formát, s ktorým sa dá ľahko pracovať v mnohých programovacích jazykoch, má formát určité nevýhody. Tu je päť hlavných obmedzení:

  1. Žiadna schéma. Na jednej strane to znamená, že máte úplnú flexibilitu na reprezentáciu údajov akýmkoľvek spôsobom. Na druhej strane to znamená, že môžete náhodne veľmi ľahko vytvoriť deformované údaje.
  2. Iba jeden typ čísla: formát IEEE-754 s dvojitou presnosťou s pohyblivou rádovou čiarkou. To je celkom sústo, ale jednoducho to znamená, že nemôžete využiť rozmanité a odlíšené typy čísel dostupné v mnohých programovacích jazykoch.
  3. Žiadny typ dátumu. Toto vynechanie znamená, že vývojári sa musia uchýliť k použitiu reťazcových reprezentácií dátumov, čo vedie k nezrovnalostiam pri formátovaní, alebo musia reprezentovať dátumy v podobe milisekúnd od epochy (1. januára 1970).
  4. Bez komentára. To znemožňuje riadkové anotácie polí, čo si vyžaduje ďalšiu dokumentáciu a zvyšuje pravdepodobnosť nedorozumenia.
  5. Výrečnosť. Aj keď je formát JSON menej verný ako formát XML, nejde o najvýstižnejší formát výmeny údajov. Pre veľkoobjemové alebo účelové služby budete chcieť používať efektívnejšie dátové formáty.

Kedy by som mal použiť JSON?

Ak píšete softvér, ktorý komunikuje s prehliadačom alebo natívnou mobilnou aplikáciou, mali by ste ako dátový formát použiť JSON. Používanie formátu ako XML je zastaraná voľba a červená vlajka pre klientske a mobilné talenty, ktoré by ste inak chceli prilákať.

V prípade komunikácie medzi servermi by vám mohlo byť lepšie použiť rámec na serializáciu, ako je Apache Avro alebo Apache Thrift. JSON tu nie je zlá voľba a stále môže byť presne to, čo potrebujete, ale odpoveď nie je taká jasná ako v prípade webu a mobilnej komunikácie.

Ak používate databázy NoSQL, ste dosť prilepení k všetkému, čo vám databáza dáva. V relačných databázach, ktoré podporujú typ JSON, je dobrým pravidlom používať ho čo najmenej. Relačné databázy boli vyladené na štruktúrované údaje, ktoré vyhovujú konkrétnej schéme. Zatiaľ čo väčšina teraz podporuje flexibilnejšie údaje vo forme JSON, môžete pri vyhľadávaní vlastností v týchto objektoch JSON očakávať výkonnostný zásah.

JSON je všadeprítomný, de facto formát na odosielanie údajov medzi webovými servermi a prehliadačmi a mobilnými aplikáciami. Jeho jednoduchý dizajn a flexibilita umožňujú ľahké čítanie a porozumenie a vo väčšine prípadov aj ľahkú manipuláciu v programovacom jazyku podľa vášho výberu. Nedostatok prísnej schémy umožňuje flexibilitu formátu, ale táto flexibilita niekedy sťažuje zabezpečenie správneho čítania a zápisu JSON.

Analyzátor JSON

Časť kódu aplikácie, ktorá transformuje údaje uložené ako JSON do formátu, ktorý môže aplikácia použiť, sa nazýva a parser. JavaScript, ako by ste čakali, obsahuje natívny syntaktický analyzátor, metódu JSON.parse ().

Možno budete musieť urobiť niečo viac pre prácu s JSON v silne napísaných jazykoch, ako je Scala alebo Elm, ale rozsiahle prijatie JSON znamená, že existujú knižnice a pomocné programy, ktoré vám pomôžu vo všetkých najťažších častiach.

Web json.org obsahuje komplexný zoznam knižníc kódov, ktoré môžete použiť na analýzu, generovanie a manipuláciu s formátom JSON v jazykoch tak rozmanitých, ako sú Python, C # a COBOL.

Obslužné programy JSON

Ak hľadáte manipuláciu alebo preskúmanie údajov kódovaných JSON priamo, bez nutnosti písania kódu sami, existuje množstvo online nástrojov, ktoré vám môžu pomôcť. Všetky programové ekvivalenty v knižniciach kódov, na ktoré sa odkazuje vyššie, ale môžete vystrihnúť a vložiť kód JSON do týchto nástrojov založených na prehľadávači, ktoré vám pomôžu lepšie pochopiť JSON alebo vykonať rýchlu a špinavú analýzu:

  • Formátovač JSON: JSONLint naformátuje a overí ľubovoľný kód JSON.
  • Prehliadač JSON: Stack.hu má web, ktorý vytvorí interaktívny strom, ktorý vám pomôže pochopiť štruktúru vášho kódu JSON.
  • Skrášľovač JSON: Ak chcete svoj kód JSON „pekne vytlačiť“ pomocou syntaxového vyfarbenia a podobne, môže vám pomôcť spoločnosť Prettydiff.
  • Prevodník JSON: Potrebujete rýchlo presunúť údaje z formátu JSON do niečoho iného? Convertcsv.com má nástroje, ktoré dokážu prevádzať JSON na CSV (ktoré potom možno otvoriť v programe Excel) alebo XML.

Výukový program JSON

Ste pripravení sa ponoriť a dozvedieť sa viac o tom, ako pracovať s JSON vo vašich interaktívnych aplikáciách? Sieť Mozilla Developer Network má skvelý návod, ktorý vám pomôže začať s formátmi JSON a JavaScript. Ak ste pripravení prejsť na ďalšie jazyky, pozrite si návod na používanie jazyka JSON v prostredí Java (z Baeldungu), v Pythone (z DataCampu) alebo v C # (z Pomocníka pre testovanie softvéru). Veľa štastia!

Do tohto článku prispel Josh Fruhlinger.

$config[zx-auto] not found$config[zx-overlay] not found