JSON.parse()

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();

亲自试一试

se json_demo.txt

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();

亲自试一试

Se json_demo_array.txt

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:

https://github.com/douglascrockford/JSON-js