Z textu na objekty a zpátky
Pro skript je JSON jen text. Než může s daty pracovat, musí text převést na pole a objekty. To umí JSON.parse():
const text = `{ "nazev": "Oslo", "teplota": 5 }`;
console.log(text.teplota);
const mesto = JSON.parse(text);
console.log(mesto.teplota + 1);undefined
6Text je ve zpětných apostrofech, aby mohl obsahovat dvojité uvozovky. Dokud je to text, nemá vlastnost teplota, a tak je text.teplota undefined. JSON.parse() text přečte a vrátí skutečný objekt, jehož vlastnosti můžete číst i měnit. Když text není platný JSON, skončí chybou SyntaxError.
JSON.stringify() dělá opak: pole nebo objekt převede na text v JSON.
const mesto = { nazev: "Řím", teplota: 21 };
console.log(JSON.stringify(mesto));{"nazev":"Řím","teplota":21}Výsledek má všechny klíče ve dvojitých uvozovkách, jak JSON vyžaduje, a žádné mezery. K čemu je to dobré? Data mohou cestovat a ukládat se jen jako text. Když stránka posílá data na server nebo si je ukládá v prohlížeči (to budete dělat později v této lekci), nejdřív je pomocí JSON.stringify() převede na text. A když text dostane zpátky, JSON.parse() z něj zase udělá pole a objekty.
Jak psát:
Pokyny
Převeďte textPredpovedi pomocí JSON.parse() na pole a uložte ho do konstanty predpoved. Pak pro každé město v predpoved vložte do seznamMest prvek li s textem jako Praha: 12 °C.
V prvku slunecnoText ukažte města, kde je slunečno, jako JSON: pomocí filter() vytvořte pole jen se slunečnými městy a pomocí JSON.stringify() ho převeďte na text. Prohlédněte si výsledek: jsou to stejná data jako v textPredpovedi, jen bez ostatních měst, mezer a zalomení řádků.