JSON.parse()
JSON 的常見用途是與 Web 伺服器交換資料。
從 Web 伺服器接收資料時,資料始終是字串。
使用 JSON.parse()
解析資料,資料將變成 JavaScript 物件。
示例 - 解析 JSON
假設我們從 Web 伺服器收到以下文字
'{"name":"John", "age":30, "city":"New York"}'
使用 JavaScript 函式 JSON.parse()
將文字轉換為 JavaScript 物件
const obj = JSON.parse('{"name":"John", "age":30, "city":"New York"}');
確保文字是 JSON 格式,否則會收到語法錯誤。
在您的頁面中使用 JavaScript 物件
示例
<p id="demo"></p>
<script>
document.getElementById("demo").innerHTML = obj.name;
</script>
自己動手試一試 »
JSON 陣列
當對 JSON(派生自陣列)使用 JSON.parse()
時,該方法將返回 JavaScript 陣列,而不是 JavaScript 物件。
異常
解析日期
JSON 中不允許 Date 物件。
如果需要包含日期,請將其寫為字串。
您以後可以將其轉換回 Date 物件
示例
將字串轉換為日期
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;
自己動手試一試 »
或者,您可以使用 JSON.parse()
函式的第二個引數,稱為 reviver。
reviver 引數是一個函式,用於在返回值之前檢查每個屬性。
示例
使用 reviver 函式將字串轉換為日期
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;
自己動手試一試 »
解析函式
JSON 中不允許函式。
如果需要包含函式,請將其寫為字串。
您以後可以將其轉換回函式
示例
將字串轉換為函式
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();
自己動手試一試 »
您應該避免在 JSON 中使用函式,因為函式會丟失其作用域,您必須使用 eval()
將它們轉換回函式。