JSON
Data v aplikacích jsou obvykle uložená v databázi a ptáme se na ně jazykem SQL. Často je ale potřeba exportovat data, protože je chceme použít v jiné aplikaci. Pro výměnu dat mezi různými aplikacemi obvykle používáme univerzální standardizované formáty. Často se vyznačují tím, že jsou lidsky čitelné, takže jim rozumí nejen aplikace, ale přečte je i člověk, když si je otevře v textovém editoru.
Nejběžnější formáty jsou tři: JSON, XML a CSV. Všechny si ukážeme na stejných datech, na kurzovním lístku směnárny.
Objekty a pole
JSON (JavaScript Object Notation) skládá data z objektů a polí. Takhle vypadá lístek Směnárny U Mostu:
{
"exchange": "Směnárna U Mostu",
"date": "2026-11-05",
"open": true,
"rates": [
{ "code": "EUR", "buy": 23.80, "sell": 24.90, "note": null },
{ "code": "USD", "buy": 21.25, "sell": 22.30, "note": null },
{ "code": "GBP", "buy": 28.40, "sell": 29.85, "note": "jen bankovky" }
]
}Objekt stojí ve složených závorkách a obsahuje dvojice klíč a hodnota, oddělené čárkami. Klíč je text v uvozovkách, za ním dvojtečka a hodnota. Pole stojí v hranatých závorkách a je to seznam hodnot v daném pořadí, tady seznam kurzů.
Objekty a pole se do sebe dají libovolně zanořovat. Lístek je objekt, v něm je pole kurzů a každý kurz je zase objekt. Funguje to jako šanon: na hřbetu je název a datum, uvnitř jsou desky s kurzy a v deskách list pro každou měnu. Kdo ví, jak je šanon uspořádaný, najde nákupní kurz libry, aniž by četl všechno ostatní.
Typy hodnot
Hodnota v JSON může být:
- text ve dvojitých uvozovkách,
"Směnárna U Mostu", - číslo bez uvozovek a s desetinnou tečkou,
23.80, - logická hodnota
truenebofalse, nulljako prázdná hodnota, kterou známe z SQL,- další objekt nebo pole.
Rozdíl mezi 23.80 a "23.80" není kosmetický. První je číslo, se kterým program rovnou počítá, druhé je text, který vypadá jako číslo. Datum JSON jako typ nemá, proto ho zapisujeme jako text ve tvaru RRRR-MM-DD, stejně jako v SQLite.
Přísný formát
Pokud znáte JavaScript, je vám zápis ve formátu JSON povědomý na první pohled, ale pozor! JSON má přísná pravidla, která když porušíte, tak jsou data neplatná.
Chybně:
{
'code': 'EUR',
"buy": 23.80, // nákupní kurz
"sell": 24.90,
}Správně:
{
"code": "EUR",
"buy": 23.80,
"sell": 24.90
}- JSON dovoluje jen dvojité uvozovky, a musí v nich být všechny textové hodnoty a názva vlastností
- komentáře nelze použít vůbec
- za posledním prvkem objektu ani pole nesmí být čárka (v JavaScriptu a jiných programovacích jazycích se naopak často doporučuje)
Program, který JSON čte, odmítne kvůli jediné chybě celý soubor a řekne, kde se zarazil. Kdyby v kurzu zbyla jen čárka za posledním prvkem, JavaScript v prohlížeči Chrome napíše:
Expected double-quoted property name in JSON at position 52 (line 5 column 1)Hláška si stěžuje na chybějící klíč na pátém řádku, a ne na čárku na čtvrtém. Po čárce totiž program čeká další dvojici klíč a hodnota a místo ní najde zavírací závorku. U chybových hlášek se proto vyplatí podívat se i o kousek před místo, které ukazují.
K čemu se JSON používá
JSON vznikl (zcela jasně) pro JavaScriptové alikace, ale dnes s ním umí každý programovací jazyk. Potkáme ho hlavně:
- v odpovědích webových API, přes která si aplikace posílají data (podrobně v další lekci),
- v konfiguračních souborech, třeba v nastavení editoru VS Code nebo v
package.jsonwebových projektů, - při výměně dat mezi aplikacemi,
- v dokumentových databázích jako MongoDB.
Otevřete si v prohlížeči adresu https://open.er-api.com/v6/latest/CZK. Je to veřejná služba s kurzy světových měn vůči koruně a odpovídá v JSON.
Firefox odpověď ukáže jako strom, ve kterém jde objekty rozbalovat a sbalovat. Chrome a Edge ji podle verze ukážou buď rovnou zformátovanou, nebo mají nahoře zaškrtávací políčko pro čitelné formátování (anglicky Pretty-print). Bez formátování je celá odpověď na jednom řádku: programu mezery a odřádkování nechybí, lidem ano.
Případně si můžete do prohlížeče nainstalovat doplněk JSON Formatter, který vám data i obarví podle typu.