Minule jsme si ukázali získávání dat z webu. Ukazovali jsme si to ale na datech ve velmi jednoduchém formátu, kdy jsme měli číslo a to bylo obsahem celé stránky. Většinou se ale na jedné stránce posílá více dat. Aby se od sebe dali odlišit, jsou v nějakém strojově čitelném formátu, ve většině případech v JSON.
Můžeme si to ukázat například zde: http://worldtimeapi.org/api/timezone/Europe/Prague, kde tato stránka nám ukazuje informace o aktuálním čase v Praze. Pro lepší zobrazení doporučuji otevírat tuto stránku v prohlížeči Firefox, který ta data zobrazí v tabulce. Taková data jsou ve formátu následujícím:
Nepodařilo se načíst kód. Máte povolený JavaScript?
Aby jsme taková data mohli zpracovat, potřebujeme si dostáhnout knihovnu Newtonsoft.Json
. Tuto
knihovnu stáhneme následujícím způsobem:
Na pravé liště klikneme pravým tlačítkem na název náš projekt.
V zobrazeném menu klikneme na Spracovat balíčky NuGet...
.
V menu, co se nám otevřelo, klikneme na Procházet
a do vyhledáváciho pole napíšeme
Newtonsoft.Json
. Po té až se nám najde, tak na něj klikneme levým tlačítem.
Po té klikneme na tlačítko Nainstalovat
.
Zde můžete vidět kód, který tuto knihovnu využívá.
Nepodařilo se načíst kód. Máte povolený JavaScript?
Tento kód nám vypíše následující výstup:
Dnes je 324. den v roce. Praha je v časovém pásmu CET.
Všimněte si, že v kódu máme město jako samostatnou proměnnou. Díky tomu můžeme změnit město na jiné jen pomocí změny proměnné, pokud se nachází v Evropě. Zde je menší vysvětlení dalšího kódu:
JObject jsonObj = JsonConvert.DeserializeObject<JObject>(response);
načte výstup v proměnné response
a rozdělí si ho na objekty.
int dayOfYear = jsonObj["day_of_year"].Value<int>();
si z výstupu uloženém v jsonObj
vyndá text označený day_of_year
a uloží si ho jako int
.
string timezone = jsonObj["abbreviation"].Value<string>();
si z výstupu uloženém v jsonObj
vyndá text označený dabbreviation
a uloží si ho jako string
.
Udělejte kód, který uživateli ukáže jeho IP adresu a časové pásmo města Sofia
.
Nepodařilo se načíst kód. Řešení pravděpodobně ještě nebylo uvolněno, nebo nemáte povolený JavaScript.
Udělejté kód, který uživateli ukáže časové pásmo jím zvoleného Evropského hlavního města. Seznam měst je zde: https://worldtimeapi.org/api/timezone/Europe/
Nepodařilo se načíst kód. Řešení pravděpodobně ještě nebylo uvolněno, nebo nemáte povolený JavaScript.