天天看點

JSON.parse()

JSON 通常用于與服務端交換資料。

在接收伺服器資料時一般是字元串。

我們可以使用 JSON.parse() 方法将資料轉換為 JavaScript 對象。

<b>參數說明:</b>

<b>text:</b>必需, 一個有效的 JSON 字元串。

<b>reviver:</b> 可選,一個轉換結果的函數, 将為對象的每個成員調用此函數。

例如我們從伺服器接收了以下資料:

{ "name":"runoob", "alexa":10000, "site":"www.runoob.com" }

我們使用 JSON.parse() 方法處理以上資料,将其轉換為 JavaScript 對象:

var obj = JSON.parse('{ "name":"runoob", "alexa":10000, "site":"www.runoob.com" }');

解析前要確定你的資料是标準的 JSON 格式,否則會解析出錯。 你可以使用我們的線上工具檢測:https://c.runoob.com/front-end/53。

解析完成後,我們就可以在網頁上使用 JSON 資料了:

&lt;p id="demo"&gt;&lt;/p&gt;

&lt;script&gt;

document.getElementById("demo").innerHTML = obj.name + ":" + obj.site;

&lt;/script&gt;

我們可以使用 AJAX 從伺服器請求 JSON 資料,并解析為 JavaScript 對象。

var xmlhttp = new XMLHttpRequest();

xmlhttp.onreadystatechange = function() {

if (this.readyState == 4 &amp;&amp; this.status == 200) {

myObj = JSON.parse(this.responseText);

document.getElementById("demo").innerHTML = myObj.name;

}

};

xmlhttp.open("GET", "/try/ajax/json_demo.txt", true);

xmlhttp.send();

檢視服務端資料: json_demo.txt

如果從服務端接收的是數組的 JSON 資料,則 JSON.parse 會将其轉換為 JavaScript 數組:

myArr = JSON.parse(this.responseText);

document.getElementById("demo").innerHTML = myArr[1];

xmlhttp.open("GET", "/try/ajax/json_demo_array.txt", true);

檢視服務端資料: json_demo_array.txt

JSON 不能存儲 Date 對象。

如果你需要存儲 Date 對象,需要将其轉換為字元串。

之後再将字元串轉換為 Date 對象。

var text = '{ "name":"Runoob", "initDate":"2013-12-14", "site":"www.runoob.com"}';

var obj = JSON.parse(text);

obj.initDate = new Date(obj.initDate);

document.getElementById("demo").innerHTML = obj.name + "建立日期: " + obj.initDate;

我們可以啟用 JSON.parse 的第二個參數 reviver,一個轉換結果的函數,對象的每個成員調用此函數。

var obj = JSON.parse(text, function (key, value) {

if (key == "initDate") {

return new Date(value);

} else {

return value;

}});

document.getElementById("demo").innerHTML = obj.name + "建立日期:" + obj.initDate;

JSON 不允許包含函數,但你可以将函數作為字元串存儲,之後再将字元串轉換為函數。

var text = '{ "name":"Runoob", "alexa":"function () {return 10000;}", "site":"www.runoob.com"}';

obj.alexa = eval("(" + obj.alexa + ")");

document.getElementById("demo").innerHTML = obj.name + " Alexa 排名:" + obj.alexa();

不建議在 JSON 中使用函數。

主流浏覽器都支援 JSON.parse() 函數:

支援

8.0

3.5

4.0

10.0

舊版浏覽器可以使用第三方庫來支援:https://github.com/douglascrockford/JSON-js