Zpracování dat z JSON

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.

Zadání

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.
            

Příliš snadné?

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.