Úvod
Existuje mnoho způsobů, jak lze JSON použít v JavaScriptu. Jedním z jeho nejzákladnějších použití je ukládání dat. Můžete jej také použít k přenosu dat mezi klienty, mezi servery nebo ze serveru ke klientovi. Mezi další užitečné aplikace patří možnost konfigurovat a ověřovat data a také generovat datové struktury.
V tomto návodu se podíváme na to, jak můžete JSON používat ve svých programech v JavaScriptu. Pokud již máte zkušenosti s programováním v JavaScriptu, mělo by to pro vás být snadné.
Co je JSON?
JSON znamená JavaScript Object Notation (zápis objektů v JavaScriptu). Je to formát navržený tak, aby umožňoval sdílení různých typů dat. JSON využívá hlavně JavaScript jako svůj primární programovací jazyk. Funguje také s jinými jazyky, jako je Python, PHP, Ruby, stejně jako Java. Je snadno čitelný, extrémně lehký a nevyžaduje mnoho formátování. S obecnou syntaxí a strukturou tohoto formátu se můžete seznámit v našem návodu: Přehled formátu pro sdílení dat JSON.
JSON lze použít samostatně nebo jej definovat v jiném formátu souboru. Pokud je samostatný, používá příponu .json. V jiném formátu se zobrazuje buď jako řetězec JSON v uvozovkách, nebo jako objekt přiřazený proměnné. JSON lze například použít také ve formátu .html. Tento formát umožňuje relativně snadno provádět přenos dat mezi serverem a prohlížečem.
Formát JSON je textový. Data ve formátu klíč-hodnota se uvádějí ve složených závorkách. Zde je ukázka toho, jak vypadá typický soubor .json:
|
1 2 3 4 5 |
{ "first_name" : "Sammy", "last_name" : "Shark", "online" : true } |
Pokud máte objekt JSON v souboru .js nebo .html zobrazí se jako proměnná takto:
|
1 2 3 4 5 |
var sammy = { "first_name" : "Sammy", "last_name" : "Shark", "online" : true } |
V některých případech je můžete vidět všechny na jednom řádku. To se stává, když se JSON v souboru JavaScriptu vykreslí jako řetězec namísto objektu:
|
1 |
var sammy = '{"first_name" : "Sammy", "last_name" : "Shark", "location" : "Ocean"}'; |
Objekty JSON můžete převést na řetězce. To je užitečné, pokud chcete provést rychlý přenos dat.
JSON vs. objekt JavaScriptu
Jak jsme již zmínili, JSON funguje s jakýmkoli programovacím jazykem. S objekty JavaScriptu však můžete pracovat pouze pomocí JavaScriptu. Syntaxe v JSON a JavaScriptu je podobná. Rozdíl je v tom, že objekty JavaScriptu se objevují v řetězcích namísto uvozovek. Objekty JavaScriptu navíc mohou jako hodnoty používat funkce, což znamená, že jsou méně omezené.
V následujícím příkladu ukazujeme JavaScriptovou verzi uživatele. Uživatel je Sammy Shark a právě teď je online:
|
1 2 3 4 5 6 7 8 |
var user = { first_name: "Sammy", last_name : "Shark", online : true, full_name : function() { return this.first_name + " " + this.last_name; } }; |
Jak vidíte, kolem žádných klíčů jako first_name, last_name, online nebo full_name nejsou žádné uvozovky. Na posledním řádku je také umístěna hodnota funkce. Pokud chcete k datům přistupovat v podobě řetězce, můžete zavolat user.first_name pomocí tečkové notace. Pokud místo toho chcete celé jméno, použijete user.full_name(), protože se jedná o funkci.
Jak přistupovat k datům JSON
Jak jsme zmínili v minulé části, k datům JSON můžete v JavaScriptu přistupovat pomocí tečkové notace. Vezměme si jako příklad objekt JSON s názvem sammy:
|
1 2 3 4 5 |
var sammy = { "first_name" : "Sammy", "last_name" : "Shark", "online" : true } |
Naše tečková notace pro přístup k hodnotám bude:
|
1 2 3 |
sammy.first_name sammy.last_name sammy.online |
Nejprve se uvádí proměnná. Poté napíšeme tečku. Nakonec uvedeme klíč, ke kterému chceme přistoupit.
Řekněme, že chceme v JavaScriptu vytvořit alert, který zobrazuje hodnotu first_name klíče. Aby se zobrazil ve vyskakovacím okně, použijeme JavaScriptovou funkci alert() takto:
|
1 |
alert(sammy.first_name); |
|
1 2 |
Výstup Sammy |
Dalším způsobem, jak přistupovat k datům z JSON, je použití syntaxe s hranatými závorkami. Klíč by měl být umístěn v uvozovkách uvnitř hranatých závorek. Zde je pokračování předchozího příkladu:
|
1 |
alert(sammy["online"]); |
|
1 2 |
Výstup true |
Co když pracujete s vnořenými prvky pole? V tomto případě musíte volat číslo položky v poli. Vezměte si následující příklad:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
var user_profile = { "username" : "SammyShark", "social_media" : [ { "description" : "twitter", "link" : "https://twitter.com/digitalocean" }, { "description" : "facebook", "link" : "https://www.facebook.com/DigitalOceanCloudHosting" }, { "description" : "github", "link" : "https://github.com/digitalocean" } ] } |
Řekněme, že chceme přistoupit k řetězci facebook. Zde je návod, jak použijeme tečkovou notaci pro přístup k této položce v poli pomocí jejího čísla:
|
1 |
alert(user_profile.social_media[1].description); |
|
1 2 |
Výstup facebook |
Nezapomeňte přidat další tečku pro každý vnořený prvek.
Funkce používané s JSON
Dále se podíváme na několik funkcí, které můžete s JSON použít. Přenos a ukládání dat se stává docela snadným, když můžete převést JSON z objektu na řetězec nebo z řetězce na objekt. Prozkoumáme, jak můžete převést JSON na řetězec (stringify) a analyzovat jej (parse) dvěma různými způsoby:
- JSON.stringify()
Řetězce je lepší používat, když se snažíte přenášet data odlehčeným způsobem. Proto se používají k ukládání a přenosu dat z klienta na server. Zvažte následující příklad. Řekněme, že shromažďujete data o nastavení uživatele na jednom počítači. Tyto informace potřebujete odeslat na server. K tomuto účelu byste použili řetězec. Poté jej můžete převést zpět pomocí JSON.parse() pro jeho čtení a práci s ním.
Funkce, kterou zde vyzdvihneme, je JSON.stringify(). Tato funkce převádí objekt JSON na řetězec JSON. V tomto příkladu přiřadíme náš objekt do proměnné obj. Převedeme jej pomocí funkce JSON.stringify(). Chcete-li to provést, předáme obj této funkci a poté přiřadíme řetězec do proměnné s takto:
|
1 2 |
var obj = {"first_name" : "Sammy", "last_name" : "Shark", "location" : "Ocean"} var s = JSON.stringify(obj) |
Volání proměnné s vám vrátí JSON jako řetězec:
|
1 |
'{"first_name" : "Sammy", "last_name" : "Shark", "location" : "Ocean"}' |
- JSON.parse()
Pochopitelně JSON.parse() plní opačnou funkci. Po dokončení přenosu dat je musíte převést zpět na objekt JSON, abyste s ním mohli pracovat. Jednou z možností je použít funkci eval(). Tento přístup však není příliš bezpečný. Proto raději používáme funkci JSON.parse() funkci.
Zvažte předchozí příklad ještě jednou. Předáme řetězec s do funkce JSON.parse(). Poté jí přiřadíme novou proměnnou:
|
1 |
var o = JSON.parse(s) |
Náš nový objekt je nyní o. Bude stejný jako obj. Lepší představu získáme, když zvážíme JSON.parse() v souboru HTML takto:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<!DOCTYPE html> <html> <body> <p id="user"></p> <script> var s = '{"first_name" : "Sammy", "last_name" : "Shark", "location" : "Ocean"}'; var obj = JSON.parse(s); document.getElementById("user").innerHTML = "Jméno: " + obj.first_name + " " + obj.last_name + "<br>" + "Lokalita: " + obj.location; </script> </body> </html> |

Zde můžete vidět, jak jsme převedli řetězec s na přístupný objekt. Tedy, JSON.parse() je bezpečná volba pro převod JSON řetězců na objekty.
Závěr
Jak jsme viděli v tomto návodu, JSON má v JavaScriptu mnoho využití. Je obzvláště užitečný, protože jej lze použít s téměř jakýmkoli programovacím jazykem, což z něj činí přirozenou volbu. Navíc jsme se dotkli pouze povrchu. S JSON toho lze dělat mnohem více. Již nyní je podporován v rozhraních API.
Zde jsou další zdroje z našeho blogu které vám pomohou programovat v JavaScriptu:
- Naučte se, jak fungují prototypy a dědičnost v JavaScriptu.
- Prozkoumejte podrobně, jak přidat JavaScript do HTML.
- Pokud vytváříte vlastní webovou aplikaci, podívejte se na našeho průvodce, jak vybrat nejlepší nastavení serveru.
Přejeme příjemné programování!
Komentáře
Zatím žádné komentáře. Buďte první.