JSON .parse()
'n Algemene gebruik van JSON is om data na/van 'n webbediener uit te ruil.
Wanneer data vanaf 'n webbediener ontvang word, is die data altyd 'n string.
Ontleed die data met JSON.parse()
, en die data word 'n JavaScript-objek.
Voorbeeld - Ontleding van JSON
Stel jou voor ons het hierdie teks van 'n webbediener ontvang:
'{"name":"John", "age":30, "city":"New York"}'
Gebruik die JavaScript-funksie JSON.parse()
om teks in 'n JavaScript-objek om te skakel:
const obj = JSON.parse('{"name":"John", "age":30, "city":"New
York"}');
Maak seker dat die teks in JSON-formaat is, anders sal jy 'n sintaksfout kry.
Gebruik die JavaScript-objek in jou bladsy:
Voorbeeld
<p id="demo"></p>
<script>
document.getElementById("demo").innerHTML = obj.name;
</script>
Skikking as JSON
Wanneer die gebruik van die JSON.parse()
op 'n JSON afgelei van 'n skikking, sal die metode 'n JavaScript-skikking terugstuur, in plaas van 'n JavaScript-objek.
Voorbeeld
const text = '["Ford", "BMW", "Audi", "Fiat"]';
const myArr = JSON.parse(text);
Uitsonderings
Ontleding van datums
Datumobjekte word nie in JSON toegelaat nie.
As jy 'n datum moet insluit, skryf dit as 'n string.
Jy kan dit later weer in 'n datumvoorwerp omskakel:
Voorbeeld
Omskep 'n string in 'n 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;
Of jy kan die tweede parameter, van die JSON.parse()
funksie, genaamd reviver gebruik .
Die reviver- parameter is 'n funksie wat elke eiendom nagaan voordat die waarde teruggestuur word.
Voorbeeld
Omskep 'n string in 'n datum deur die herlewingsfunksie te gebruik:
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;
Ontledingsfunksies
Funksies word nie in JSON toegelaat nie.
As jy 'n funksie moet insluit, skryf dit as 'n string.
Jy kan dit later weer in 'n funksie omskakel:
Voorbeeld
Skakel 'n string om in 'n funksie:
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();
Jy moet die gebruik van funksies in JSON vermy, die funksies sal hul omvang verloor, en jy sal moet gebruik eval()
om hulle terug te omskep in funksies.