Internet Info, s.r.o. Lupa Měšec Podnikatel Root Zdroják DigiZone Slunečnice Vitalia TopDrive KupDnes Navrcholu NovýTarif Dobrý web Weblogy Woko Jagg Computer.cz SK: MojeLinky

Hlavní navigace

JSON : jednotný formát pro výměnu dat

JSON (JavaScript Object Notation) se v posledních letech stal jedním z nejpoužívanějších formátů pro výměnu dat na Webu. V článku vysvětlíme, proč je tento formát tolik populární, předvedeme si základní pravidla zápisu dat pomocí JSON a představíme užitečné nástroje pro práci s ním.

Tweetni to Twitter Jaggni to! Jagg Del.icio.us Delicious

JSON [džej-son], JavaScript Object Notation neboli JavaScriptový zápis objektů, je formát pro výměnu dat, který se během posledních několika let zařadil mezi nejdůležitější formáty na Webu. Navrhl jej Douglas Crockford a jeho specifikaci najdete v RFC 4627.

V čem tkví úspěch JSON?

JSON se objevil ve chvíli, kdy se na webu pro výměnu dat používal převážně formát XML. Ten v očích javascriptových vývojářů trpěl některými nedostatky, např. práce s ním byla složitá (bylo nutné používat „neohrabaný“ DOM, řešit přítomnost uzlů obsahujících pouze bílé znaky apod.).

A tak ačkoliv při zápisu celých dokumentů JSON nemůže (a ani nemá) formátu XML konkurovat, v zápisu krátkých strukturovaných dat vyměňovaných webovými aplikacemi konkurenční boj vyhrál JSON.

Zápis JSON je platným zápisem jazyka JavaScript. To je jedna z jeho výhod; již ze samotného pohledu na zápis v JSON rovnou vidíme, jak s ním budeme v programu pracovat:

[
  {"name": "Cerna sanitka", "tvname": "CT1"},
  {"name": "Comeback", "tvname": "Nova"},
  {"name": "Pratele", "tvname": "Prima"}
] 

Pokud by výše uvedená data nebyla v JSON, ale v čistém textu, navrhli bychom si datovou strukturu, do které bychom je načetli (byla by pravděpodobně stejná nebo velmi podobná našemu zápisu v JSON). Pokud by data byla v XML, postupovali bychom stejně nebo bychom je zpracovali skrze rozhraní DOM. Oba způsoby jsou možné, ale přesně o jeden krok komplikovanější, než je nezbytně nutné.

Zápis v JSON je zápisem v JavaScriptu, je tedy sám o sobě již připravenou datovou strukturou ke zpracování. Můžeme říct, že JSON je serializovanou podobou datových typů JavaScriptu. Přesněji některých jeho datových typů, viz dále.

Formát JSON

Do JSON můžeme uložit následující typy dat:

  • JSONString – textový řetězec
  • JSONNumber – číslo (celočíselné nebo reálné, včetně zápisu s exponentem)
  • JSONBoolean – logická hodnota
  • JSONNull – hodnota null
  • JSONArray – pole
  • JSONObject- objekt

Ostatní datové typy nemůžeme vkládat přímo, např. datum pro vložení do JSON převedeme na JSONString.

JSONString

Příklad použití: "Hezky česky"

Řetězec musí být vložen do uvozovek (apostrofy nejsou povoleny) a může obsahovat všechny znaky Unicode. Uvozovky a zpětné lomítko je nutné vložit ve tvaru \" a \\.

Pokud bychom měli s češtinou problémy, můžeme znaky s diakritikou stejně jako v JavaScriptu vložit ve tvaru \uXXXX, kde XXXX značí kód znaku z tabulky Unicode zapsaný v šestnáctkové soustavě. V našem případě by výsledek vypadal:  "Hezky \u010desky".

JSONNumber

Příklady:
  12
  -13.5
  0.7e-4

Na zápisu čísla není nic neobvyklého, snad jen, že vedoucí nulu před desetinnou čárkou nelze vynechat. Zápis .5 je tedy neplatný.

JSONBoolean

Příklady:
  true
  false

JSONNull

Příklad: null

JSONArray

Příklady:
  [0, "Shakespeare", false]
  [[1, 2], null, "apple"]

Pole v JSON je kontejner obsahující seřazený výpis hodnot. Ohraničují jej hranaté závorky. Hodnotami pole může být kterýkoliv datový typ JSON včetně objektu nebo pole; můžeme tak pole do sebe snadno vnořovat.

JSONObject

Příklady:
  {"x": 45, "y": 78}
  {"person": {"name": "Robin", "age": 35}, "met": false, "hobbies": null, "data": [1,2]}

Objekt v JSON není plnohodnotný objekt, jaký známe z JavaScriptu. Jedná se o kontejner, který obsahuje pouze data, žádné metody (měli bychom ho tedy správně nazývat hash nebo asociativní pole). Každá datová položka objektu má svůj klíč, který je typu JSONString.

Do objektu můžeme vkládat další objekty; lze tak snadno vytvářet složitější struktury. Rozsáhlost struktur a hloubka vnoření není specifikací omezena, může být ovšem omezena konkrétní implementací JavaScriptu a JSON parseru.

Tím jsme si předvedli stavební kameny JSON. Nyní můžete začít s tvorbou datových formátů.

Nástroje JSONLint a JSON Editor

Při práci s JSON vám přijdou vhod některé nástroje.

Tím prvním je JSONLint na adrese jsonlint.com, který váš JSON zápis zvaliduje a pomůže vám opravit chyby v syntaxi. Zároveň také všechna data jednotně odsadí (není nutné, ale zvyšuje to čitelnost).

JSON Lint

Dalším nástrojem je JSON Editor. V něm si můžete vyzkoušet práci se složitějšími strukturami. Zobrazí vám nejen jejich stromovou podobu, ale umožní v ní i vyhledávat a upravovat jednotlivé uzly. U složitých struktur oceníte možnost vygenerování kódu pro přístup k uzlu. Stačí vybrat požadovaný uzel a editor zobrazí kód pro přístup k němu, např.:

json['members'][0]['entity']['updated'] 
JSON Editor

Použití

Přestože je JSON odvozen z JavaScriptu, je jazykově nezávislý. Najdeme tak implementaci JSON v PHP (od verze 5.2 nativně), Ruby nebo Pythonu, a dokonce některé desktopové aplikace používají JSON jako souborový formát (např. prohlížeč Google Chrome).

Na Webu se JSON používá pro výměnu dat pomocí AJAXu. Konkuruje mu zde asi jen XML. Navíc řada služeb používá JSON pro výměnu dat skrze své API. Jako příklad můžeme uvést jednoduché služby JSON-time, JSON-head, JSON-tinyurl.

Pokračování příště

Vysvětlili jsme si, jak se zapisují data pomocí JSON, ale ještě jsme se nenaučili s ním pracovat. Nejsnazší cestou k jejich zpracování by bylo použít metodu eval, která vyhodnotí svůj argument jako kód jazyka JavaScript. Příště si ukážeme, proč bychom se měli této metodě raději vyhnout a jaké jsou další cesty pro práci s JSON.

Odkazy

Anketa

Používáte ve vašich aplikacích JSON?

       

Martin Hassman

Martin Hassman

Martin Hassman vymyslel a založil projekt Zdroják. Absolvoval Vysokou školu chemicko-technologickou v Praze. Pracoval jako webový vývojář a specialista na technologie Mozilla.org.

Kurzy UX (user experience) - Praha, Brno, Bratislava

DW - Školení použitelnosti
  • Použitelný web mají návštěvníci rádi a lépe vrací investované peníze.
  • Poradíme vám, které metody využít a co vám to přinese.
  • Naučíte se, jak rychle a levně otestovat web.
  • Pro účastníky školení možnost zdarma vyzkoušet nástroje na zlepšování a testování webu (např. Usabilla, Loop11, OpenHallway a další)

Podívejte se na detaily školení Nástroje a metody UX, workshopu uživatelského testování použitelnosti a workshopu Návrh webu a mobilních aplikací.

Akce: Využijte last minute slevu na školení v Brně a Bratislavě!

Přehled názorů

První!
anonymní uživatel 7. 10. 2008 10:18
Nový
Bohužel nelíbí
Mastodont 7. 10. 2008 16:21
Nový
       

Tento text je již více než dva měsíce starý. Chcete-li na něj reagovat v diskusi, pravděpodobně vám již nikdo neodpoví. Pro řešení aktuálních problémů doporučujeme využít naše diskusní fórum.

Zasílat nově přidané příspěvky e-mailem