JSON .parse()
Běžným použitím JSON je výměna dat do/z webového serveru.
Při příjmu dat z webového serveru jsou data vždy řetězec.
Analyzujte data pomocí JSON.parse()
a data se stanou objektem JavaScriptu.
Příklad – Analýza JSON
Představte si, že jsme obdrželi tento text z webového serveru:
'{"name":"John", "age":30, "city":"New York"}'
Pomocí funkce JavaScript JSON.parse()
převeďte text na objekt JavaScript:
const obj = JSON.parse('{"name":"John", "age":30, "city":"New
York"}');
Ujistěte se, že je text ve formátu JSON, jinak se zobrazí chyba syntaxe.
Použijte na své stránce objekt JavaScript:
Příklad
<p id="demo"></p>
<script>
document.getElementById("demo").innerHTML = obj.name;
</script>
Pole jako JSON
Při použití JSON.parse()
on a JSON odvozeného z pole metoda vrátí pole JavaScript namísto objektu JavaScript.
Příklad
const text = '["Ford", "BMW", "Audi", "Fiat"]';
const myArr = JSON.parse(text);
Výjimky
Analýza dat
Objekty Date nejsou v JSON povoleny.
Pokud potřebujete uvést datum, napište ho jako řetězec.
Později jej můžete převést zpět na objekt data:
Příklad
Převeďte řetězec na datum:
const text =
'{"name":"John", "birth":"1986-12-14", "city":"New York"}';
const obj = JSON.parse(text);
obj.birth = new Date(obj.birth);
document.getElementById("demo").innerHTML = obj.name + ", " + obj.birth;
Nebo můžete použít druhý parametr JSON.parse()
funkce nazvaný reviver .
Parametr reviver je funkce, která kontroluje každou vlastnost, než vrátí hodnotu.
Příklad
Převeďte řetězec na datum pomocí funkce reviver :
const text =
'{"name":"John", "birth":"1986-12-14", "city":"New York"}';
const obj = JSON.parse(text, function (key, value) {
if
(key == "birth") {
return new
Date(value);
} else {
return value;
}
});
document.getElementById("demo").innerHTML = obj.name + ", " + obj.birth;
Funkce analýzy
Funkce nejsou v JSON povoleny.
Pokud potřebujete zahrnout funkci, napište ji jako řetězec.
Později jej můžete převést zpět na funkci:
Příklad
Převeďte řetězec na funkci:
const text =
'{"name":"John", "age":"function () {return
30;}", "city":"New York"}';
const obj = JSON.parse(text);
obj.age = eval("(" + obj.age + ")");
document.getElementById("demo").innerHTML = obj.name + ", " +
obj.age();
Měli byste se vyhnout používání funkcí v JSON, funkce ztratí svůj rozsah a budete je muset eval()
převést zpět na funkce.