Programování

Co je JSON? Lepší formát pro výměnu dat

JavaScript Object Notation je textová reprezentace strukturovaných dat bez schématu, která je založena na párech klíč – hodnota a seřazených seznamech. Ačkoli JSON je odvozen z JavaScriptu, je podporován buď nativně, nebo prostřednictvím knihoven ve většině hlavních programovacích jazyků. JSON se běžně, ale nikoli výlučně, používá k výměně informací mezi webovými klienty a webovými servery.

Za posledních 15 let se JSON stal na webu všudypřítomným. Dnes je to formát volby téměř pro každou veřejně dostupnou webovou službu a často se používá také pro soukromé webové služby.

Popularita JSON také vyústila v nativní podporu JSON mnoha databázemi. Relační databáze jako PostgreSQL a MySQL se nyní dodávají s nativní podporou ukládání a dotazování na data JSON. Databáze NoSQL jako MongoDB a Neo4j také podporují JSON, ačkoli MongoDB používá v zákulisí mírně upravenou binární verzi JSON.

V tomto článku se krátce podíváme na JSON a probereme, odkud pochází, jeho výhody oproti XML, jeho nevýhody, kdy byste jej měli použít a kdy byste měli zvážit alternativy. Ale nejdřív se pojďme ponořit do hlouposti, jak vypadá JSON v praxi.

Příklad JSON

Zde je příklad dat zakódovaných v JSON:

{

„FirstName“: „Jonathan“,

“LastName”: “Freeman”,

„LoginCount“: 4,

„IsWriter“: pravda,

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

"domácí mazlíčci": [

    {

„Name“: „Lilly“,

„Type“: „Raccoon“

    }

  ]

}

Struktura výše jasně definuje některé atributy člověka. Zahrnuje jméno a příjmení, počet přihlášení osoby, zda je tato osoba spisovatelem, seznam společností, se kterými osoba pracuje, a seznam domácích mazlíčků dané osoby (v tomto případě pouze jednoho). Struktura, jako je ta výše, může být předána ze serveru do webového prohlížeče nebo mobilní aplikace, která poté provede nějakou akci, jako je zobrazení dat nebo jejich uložení pro pozdější použití.

JSON je obecný datový formát s minimálním počtem typů hodnot: řetězce, čísla, logické hodnoty, seznamy, objekty a null. I když je notace podmnožinou JavaScriptu, tyto typy jsou zastoupeny ve všech běžných programovacích jazycích, což dělá JSON dobrým kandidátem na přenos dat přes mezery v jazycích.

Soubory JSON

Data JSON jsou uložena v souborech, které končí příponou .json. V souladu s lidsky čitelným étosem společnosti JSON jsou to jednoduše soubory prostého textu a lze je snadno otevřít a zkontrolovat. Jak vysvětluje blog SQLizer, je to také klíč k širší interoperabilitě JSONu, protože téměř každý jazyk, který můžete pojmenovat, dokáže číst a zpracovávat soubory ve formátu prostého textu a lze je snadno odeslat přes internet.

Proč bych měl používat JSON?

Abychom pochopili užitečnost a důležitost JSON, budeme muset trochu porozumět historii interaktivity na webu.

Na počátku 2000 se začala interaktivita na webu transformovat. V té době prohlížeč sloužil hlavně jako hloupý klient k zobrazování informací a server udělal veškerou tvrdou práci, aby připravil obsah pro zobrazení. Když uživatel klikne na odkaz nebo na tlačítko v prohlížeči, na server se odešle požadavek, server připraví informace potřebné jako HTML a prohlížeč vykreslí HTML jako novou stránku. Tento vzor byl pomalý a neefektivní a vyžadoval, aby prohlížeč znovu vykreslil vše na stránce, i když se změnila pouze část stránky.

Protože opětovné načtení celé stránky bylo nákladné, weboví vývojáři se zaměřili na novější technologie, aby zlepšili celkovou uživatelskou zkušenost. Mezitím se schopnost vytvářet webové požadavky na pozadí při zobrazování stránky, která byla nedávno zavedena v aplikaci Internet Explorer 5, ukázala jako životaschopný přístup k postupnému načítání dat pro zobrazení. Namísto opětovného načtení celého obsahu stránky by klepnutí na tlačítko obnovení spustilo webový požadavek, který by se načetl na pozadí. Po načtení obsahu bylo možné s daty manipulovat, ukládat je a zobrazovat je na stránce pomocí JavaScriptu, univerzálního programovacího jazyka v prohlížečích.

REST vs. SOAP: Připojení JSON

Původně byla tato data přenášena ve formátu XML (příklad viz níže) pomocí protokolu zasílání zpráv s názvem SOAP (Simple Object Access Protocol). Ale XML byl podrobný a obtížně spravovatelný v JavaScriptu. JavaScript již měl objekty, které představují způsob vyjádření dat v daném jazyce, takže Douglas Crockford vzal podmnožinu tohoto výrazu jako specifikaci pro nový formát pro výměnu dat a nazval jej JSON. JSON bylo pro lidi mnohem snazší číst a analyzovat prohlížeče.

V průběhu 90. let začala technologie SOAP za účelem přenosu dat předjíždět další technologie webových služeb s názvem Representational State Transfer nebo REST. Jednou z velkých výhod programování pomocí REST API je, že můžete použít více datových formátů - nejen XML, ale také JSON a HTML. Jelikož vývojáři webu začali upřednostňovat JSON před XML, také začali upřednostňovat REST před SOAP. Jak uvedl Kostyantyn Kharchenko na blogu Svitla: „Úspěch REST je v mnoha ohledech způsoben formátem JSON kvůli jeho snadnému použití na různých platformách.“

Dnes je JSON de-facto standardem pro výměnu dat mezi webovými a mobilními klienty a back-end službami.

JSON vs. XML

Jak je uvedeno výše, hlavní alternativou k JSON je XML. XML je však v nových systémech stále méně běžný a je snadné pochopit proč. Níže je uvedena verze dat, která jste viděli výše, tentokrát v XML:

Jonathan

Freemane

  4

skutečný

Spantree Technology Group

Lilly

Mýval

Kromě toho, že je podrobnější (v tomto případě přesně dvakrát tak podrobný), XML také zavádí určitou nejednoznačnost při analýze do datové struktury vhodné pro JavaScript. Převod XML na objekt JavaScript může trvat desítky až stovky řádků kódu a nakonec vyžaduje přizpůsobení na základě konkrétního analyzovaného objektu. Převod JSON na objekt JavaScript trvá jeden řádek kódu a nevyžaduje žádné předchozí znalosti o analyzovaném objektu.

Omezení JSON

Ačkoli JSON je relativně stručný, flexibilní datový formát, se kterým se snadno pracuje v mnoha programovacích jazycích, má formát určité nevýhody. Zde je pět hlavních omezení:

  1. Žádné schéma. Na jedné straně to znamená, že máte úplnou flexibilitu k reprezentaci dat jakýmkoli způsobem. Na druhé straně to znamená, že byste mohli snadno snadno vytvořit znetvořená data.
  2. Pouze jeden typ čísla: formát IEEE-754 s dvojitou přesností s plovoucí desetinnou čárkou. To je docela sousto, ale jednoduše to znamená, že nemůžete využít rozmanitých a odlišných typů čísel dostupných v mnoha programovacích jazycích.
  3. Žádný typ data. Toto opomenutí znamená, že se vývojáři musí uchýlit k použití řetězcových vyjádření dat, což vede k nesrovnalostem ve formátování, nebo musí představovat data ve formě milisekund od epochy (1. ledna 1970).
  4. Bez komentáře. Díky tomu je nemožné anotovat pole inline, což vyžaduje další dokumentaci a zvyšuje pravděpodobnost nedorozumění.
  5. Výřečnost. Zatímco JSON je méně podrobný než XML, není to nejstručnější formát pro výměnu dat. U velkoobjemových nebo účelových služeb budete chtít používat efektivnější datové formáty.

Kdy mám použít JSON?

Pokud píšete software, který komunikuje s prohlížečem nebo nativní mobilní aplikací, měli byste jako datový formát použít JSON. Použití formátu, jako je XML, je zastaralá volba a červená vlajka pro front-end a mobilní talenty, které byste jinak chtěli přilákat.

V případě komunikace mezi servery by vám mohlo být lépe používat rozhraní serializace, jako je Apache Avro nebo Apache Thrift. JSON zde není špatná volba a stále může být přesně to, co potřebujete, ale odpověď není tak jasná jako pro web a mobilní komunikaci.

Pokud používáte databáze NoSQL, jste docela uvízli v tom, co vám databáze dává. V relačních databázích, které podporují JSON jako typ, je dobrým pravidlem používat jej co nejméně. Relační databáze byly vyladěny pro strukturovaná data, která vyhovují konkrétnímu schématu. Zatímco většina nyní podporuje flexibilnější data ve formě JSON, můžete očekávat zásah výkonu při dotazování na vlastnosti v rámci těchto objektů JSON.

JSON je všudypřítomný, de facto formát pro odesílání dat mezi webovými servery a prohlížeči a mobilními aplikacemi. Jeho jednoduchý design a flexibilita usnadňují čtení a porozumění a ve většině případů i snadnou manipulaci v programovacím jazyce podle vašeho výběru. Nedostatek přísného schématu umožňuje flexibilitu formátu, ale tato flexibilita někdy ztěžuje zajištění správného čtení a zápisu JSON.

Analyzátor JSON

Část kódu aplikace, která transformuje data uložená jako JSON do formátu, který aplikace může použít, se nazývá a analyzátor. JavaScript, jak byste očekávali, obsahuje nativní analyzátor, metodu JSON.parse ().

Možná budete muset udělat trochu více práce, abyste mohli pracovat s JSON v silně napsaných jazycích, jako je Scala nebo Elm, ale rozšířené přijetí JSON znamená, že existují knihovny a nástroje, které vám pomohou projít všemi nejtěžšími částmi.

Web json.org obsahuje komplexní seznam knihoven kódů, které můžete použít k analýze, generování a manipulaci s JSON, v jazycích tak rozmanitých, jako jsou Python, C # a COBOL.

Obslužné programy JSON

Pokud chcete přímo manipulovat nebo zkoumat data kódovaná JSON, aniž byste museli psát kód sami, existuje řada online nástrojů, které vám mohou pomoci. Všechny programové ekvivalenty v knihovnách kódů, na které se odkazuje výše, ale můžete vyjmout a vložit kód JSON do těchto nástrojů založených na prohlížeči, které vám pomohou lépe porozumět JSON nebo provést rychlou a špinavou analýzu:

  • Formátovač JSON: JSONLint naformátuje a ověří libovolný kód JSON.
  • Prohlížeč JSON: Stack.hu má web, který vytvoří interaktivní strom, který vám pomůže pochopit strukturu vašeho kódu JSON.
  • JSON zkrášlovač: Pokud chcete „pěkně vytisknout“ svůj kód JSON pomocí syntaxe a podobně, může vám Prettydiff pomoci.
  • Převaděč JSON: Potřebujete rychle přesunout data z formátu JSON do něčeho jiného? Convertcsv.com má nástroje, které mohou převádět JSON na CSV (které lze poté otevřít v aplikaci Excel) nebo XML.

Výukový program JSON

Jste připraveni se ponořit a dozvědět se více o tom, jak pracovat s JSON ve vašich interaktivních aplikacích? Síť Mozilla Developer Network má skvělý návod, který vám pomůže začít s JSON a JavaScript. Pokud jste připraveni přejít do jiných jazyků, podívejte se na výukový program o používání JSON s Java (od Baeldung), s Pythonem (z DataCamp) nebo s C # (z nápovědy Testování softwaru). Hodně štěstí!

Do tohoto článku přispěl Josh Fruhlinger.

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