JSON.parse()
- Forrige side JSON datatyper
- Næste side JSON-stringifikation
Det almindelige brug af JSON er dataoverførsel med webservere.
Når data modtages fra en webserver, er data altid streng.
Gennem JSON.parse()
Fortolk data, som vil blive til JavaScript-objekter.
Eksempel – Fortolk JSON
Forestil dig, at vi modtager denne tekst fra en webserver:
'{ "name":"Bill Gates", "age":62, "city":"Seattle"}'
Brug JavaScript-funktionen JSON.parse()
Konverter teksten til et JavaScript-objekt:
var obj = JSON.parse('{ "name":"Bill Gates", "age":62, "city":"Seattle"}');
Sørg for, at denne tekst er skrevet i JSON-format, ellers vil der opstå syntaksfejl.
Brug JavaScript-objekter på din side:
Eksempel
<p id="demo"></p> <script> document.getElementById("demo").innerHTML = obj.name + ", " + obj.age; </script>
JSON fra serveren
Du kan anmode om JSON fra serveren ved hjælp af AJAX-anmodninger.
Så længe serverens respons er skrevet i JSON-format, kan du fortolke strengen som et JavaScript-objekt.
Eksempel
Brug XMLHttpRequest til at hente data fra serveren:
var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { myObj = JSON.parse(this.responseText); document.getElementById("demo").innerHTML = myObj.name; } }; xmlhttp.open("GET", "json_demo.txt", true); xmlhttp.send();
som en JSON-array
når du bruger JSON, der er udledt fra en array JSON.parse()
dette metode vil returnere en JavaScript-array, ikke et JavaScript-objekt.
Eksempel
JSON, der returneres fra serveren, er en array:
var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { myArr = JSON.parse(this.responseText); document.getElementById("demo").innerHTML = myArr[0]; } }; xmlhttp.open("GET", "json_demo_array.txt", true); xmlhttp.send();
Undtagelse
Analyser dato
Datoobjekter er ikke tilladt i JSON.
Hvis du skal inkludere datoer, skriv dem som streng.
Efterfølgende kan du konvertere det tilbage til datoobjekt:
Eksempel
Konverter streng til dato:
var text = '{ "name":"Bill Gates", "birth":"1955-10-28", "city":"Seattle"}'; var obj = JSON.parse(text); obj.birth = new Date(obj.birth); document.getElementById("demo").innerHTML = obj.name + ", " + obj.birth;
eller du kan bruge JSON.parse()
Funktionens anden parameter kaldes reviver.
denne reviver Parameteren er en funktion, som kontrollerer hver egenskab før den returnerer værdien.
Eksempel
Konverter streng til dato, brug reviver funktionen:
var text = '{ "name":"Bill Gates", "birth":"1955-10-28", "city":"Seattle"}'; var 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;
Analyser funktion
Funktioner er ikke tilladt i JSON.
Hvis du skal inkludere funktioner, skriv det som en streng.
Senere kan du konvertere det tilbage til funktion:
Eksempel
Konverter streng til funktion:
var text = '{ "name":"Bill Gates", "age":"function () {return 62;}", "city":"Seattle"}'; var obj = JSON.parse(text); obj.age = eval("(" + obj.age + ")"); document.getElementById("demo").innerHTML = obj.name + ", " + obj.age();
您应该避免在 JSON 中使用函数,函数会丢失它们的作用域,而且您还需要使用 eval()
将它们转换回函数。
browser-understøttelse
alle主流浏览器以及最新的 ECMAScript (JavaScript) 标准均包含 JSON.parse()
funktion:
Tallene i nedenstående tabel angiver fuld understøttelse JSON.parse()
Første browser-version af funktionen:
Ja | 8.0 | 3.5 | 4.0 | 10.0 |
For ældre browsere er følgende JavaScript-biblioteker tilgængelige på følgende adresse:
- Forrige side JSON datatyper
- Næste side JSON-stringifikation