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
6

Text 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.

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ů.

Začněte programovat zdarma

Registrací souhlasíte s provozními podmínkami a zásadami ochrany osobních údajů.

Nebo se registrujte pomocí:

Zpět

2/9

Další