JavaScript Object Notation (JSON) je jedním z nejoblíbenějších datových formátů používaných ke sdílení informací. JSON je textový formát, který usnadňuje čtení a zápis dat, a to jak pro počítače, tak pro lidi. V JavaScriptu můžete snadno převést objekty JavaScriptu na JSON a naopak.
let jsonData = < "name": "John", "age": 30 >;console.log(jsonData);
Výše uvedený kód přinese následující výsledek do konzole:
Použití metody console.log()
Nejjednodušší způsob použití metody console.log () je převod jeho řetězcové hodnoty. Například:
console.log("Привет, мир!");
Tento kód přinese do konzole zprávu " Ahoj, světe!".
let age = 25;console.log(age);
V tomto případě bude odvozena hodnota proměnné age .
let person = ;console.log(person);
V takovém případě bude vyveden celý objekt .
let a = 10;let b = 5;console.log(a, b);
V tomto případě budou vyvedeny hodnoty proměnných a A b .
Převod JSON na řetězec pomocí JSON.stringify()
Použít JSON.stringify (), musíte mu předat objekt nebo pole, které je třeba převést. Například:
let data = ;let jsonString = JSON.stringify(data);console.log(jsonString);
V důsledku toho bude proměnná jsonString obsahovat řetězec reprezentující data objektu' data ' ve formátu JSON:
Všimněte si, že všechny klíče a hodnoty jsou uzavřeny ve dvojitých uvozovkách a chybí prázdná místa a odsazení. JSON.stringify () automaticky převádí data do souladu se syntaxí JSON.
JSON.stringify () může také přijmout druhou možnost - pole nebo funkci, pro přizpůsobení převodu dat.
Chcete-li například do výsledného řádku zahrnout pouze určité vlastnosti objektu, můžete pole vlastností přenést druhým parametrem:
let data = ;let jsonString = JSON.stringify(data, ["name", "age"]);console.log(jsonString);
V důsledku toho bude proměnná jsonString obsahovat řetězec představující pouze vlastnosti' name 'a' age 'objektu ' data':
Také, druhým parametrem může být funkce, která vrací převedenou hodnotu pro každou vlastnost:
let data = ;let jsonString = JSON.stringify(data, function(key, value) return value;>);console.log(jsonString);
V důsledku toho bude proměnná jsonString obsahovat řetězec, ve kterém budou všechny znaky hodnoty vlastnosti 'name' převedeny na velká písmena:
Tedy použití JSON.stringify () usnadňuje převod dat JSON na řádek v JavaScriptu, což může být užitečné v mnoha situacích.
Získání dat ze souboru JSON
Formát JSON se často používá k ukládání a přenosu dat. Čtení dat ze souboru JSON do JavaScriptu lze provést pomocí standardního objektu XMLHttpRequest nebo pomocí Fetch API.
Chcete-li číst data pomocí XMLHttpRequest, musíte vytvořit novou instanci objektu a předat mu adresu URL souboru s daty. Poté musíte zadat metodu dotazu (například GET) a odeslat dotaz. Když je požadavek úspěšný, data lze získat pomocí vlastnosti responseText. Dále lze JSON řádek rozparcelovat pomocí JSON.parse() pro získání JavaScript objektu.
let xhr = new XMLHttpRequest();xhr.open('GET', 'data.json', true);xhr.onreadystatechange = function() >;xhr.send();
Pomocí Fetch API bude kód vypadat trochu jinak. Chcete-li získat data, musíte použít funkci fetch, předat jí adresu URL datového souboru a vyvolat metodu json() pro získání objektu JavaScriptu. Data pak lze použít podle vlastního uvážení.
fetch('data.json').then(response => response.json()).then(data => console.log(data)).catch(error => console.error(error));
Obě metody fungují asynchronně, takže data ze souboru JSON budou získána v okamžiku spuštění promise, nikoli ve fázi čtení kódu.
Práce s nestandardními JSON daty
Pro práci s nestandardními JSON daty lze použít různé přístupy. Jedním ze způsobů je použití vnořených objektů a polí. Pokud je datová struktura složitou hierarchií, lze k uspořádání a ukládání informací použít vnořené objekty.
Dalším způsobem je použití polí. Pokud mají data seznam položek, můžete vytvořit pole a vyplnit jej požadovanými hodnotami. To je zvláště užitečné, když data mají proměnlivý počet prvků nebo když je třeba vzít v úvahu pořadí prvků.
Kromě toho je možné použít kombinaci vnořených objektů a polí k zobrazení nestandardních dat. Pokud mají například data vnořenou strukturu, je možné vytvořit objekt, který bude obsahovat jiné objekty nebo pole.