JSON .parse()
Een veelgebruikt gebruik van JSON is het uitwisselen van gegevens van/naar een webserver.
Bij het ontvangen van gegevens van een webserver zijn de gegevens altijd een string.
Parseer de gegevens met JSON.parse()
, en de gegevens worden een JavaScript-object.
Voorbeeld - JSON parseren
Stel je voor dat we deze tekst ontvangen van een webserver:
'{"name":"John", "age":30, "city":"New York"}'
Gebruik de JavaScript-functie JSON.parse()
om tekst om te zetten in een JavaScript-object:
const obj = JSON.parse('{"name":"John", "age":30, "city":"New
York"}');
Zorg ervoor dat de tekst de JSON-indeling heeft, anders krijgt u een syntaxisfout.
Gebruik het JavaScript-object op uw pagina:
Voorbeeld
<p id="demo"></p>
<script>
document.getElementById("demo").innerHTML = obj.name;
</script>
Array als JSON
Bij gebruik van de JSON.parse()
op een JSON die is afgeleid van een array, retourneert de methode een JavaScript-array in plaats van een JavaScript-object.
Voorbeeld
const text = '["Ford", "BMW", "Audi", "Fiat"]';
const myArr = JSON.parse(text);
Uitzonderingen
Datums ontleden
Datumobjecten zijn niet toegestaan in JSON.
Als u een datum moet opnemen, schrijft u deze als een tekenreeks.
U kunt het later weer omzetten in een datumobject:
Voorbeeld
Converteer een string naar een 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 u kunt de tweede parameter van de JSON.parse()
functie gebruiken, genaamd reviver .
De reviver- parameter is een functie die elke eigenschap controleert voordat de waarde wordt geretourneerd.
Voorbeeld
Converteer een string naar een datum, met behulp van de reviver - functie:
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;
Parseerfuncties
Functies zijn niet toegestaan in JSON.
Als u een functie moet opnemen, schrijft u deze als een tekenreeks.
Je kunt het later weer in een functie omzetten:
Voorbeeld
Converteer een string naar een functie:
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();
U moet het gebruik van functies in JSON vermijden, de functies verliezen hun bereik en u zou ze moeten gebruiken eval()
om ze weer om te zetten in functies.