將 JavaScript 對象表示法 (JSON) 字符串轉換爲對象。
一、語法:
JSON.parse(text [, reviver])
二、參數:
text
必需。 一個有效的 JSON 字符串。
reviver
可選。 一個轉換結果的函數。 將爲對象的每個成員調用此函數。 如果成員包含嵌套對象,則先於父對象轉換嵌套對象。 對於每個成員,會發生以下情況:
如果 reviver 返回一個有效值,則成員值將替換爲轉換後的值。
如果 reviver 返回它接收的相同值,則不修改成員值。
如果 reviver 返回 null 或 undefined,則刪除了該成員。
三、返回值:
一個對象或數組。
四、異常:
如果此函數引發 JavaScript 分析器錯誤(如“SCRIPT1014:無效字符”),則輸入文本將不遵循 JSON 語法。 若要更正此錯誤,請執行下列操作之一:
修改 text 參數以遵循 JSON 語法。 有關更多信息,請參見 JSON 對象的 BNF 語法表示法。
例如,如果響應的格式爲 JSONP 而非純 JSON,請在響應對象上嘗試此代碼:
var fixedResponse = response.responseText.replace(/\\'/g, "'");
var jsonObj = JSON.parse(fixedResponse);確保通過 JSON 兼容的實現(如 text)對 JSON.stringify 參數進行序列化。
在 JSON 驗證程序(如 JSLint)中運行 text 參數以幫助找到語法錯誤。
示例
以下示例使用 JSON.parse 將 JSON 字符串轉換成對象。
var jsontext = '{"firstname":"Jesper","surname":"Aaberg","phone":["555-0100","555-0120"]}';
var contact = JSON.parse(jsontext);
document.write(contact.surname + ", " + contact.firstname);
document.write(contact.phone[1]);
// Output:
// Aaberg, Jesper
// 555-0100
示例
以下示例演示瞭如何使用 JSON.stringify 將數組轉換成 JSON 字符串,然後使用 JSON.parse 將該字符串重新轉換成數組。
var arr = ["a", "b", "c"];
var str = JSON.stringify(arr);
document.write(str);
document.write ("<br/>");
var newArr = JSON.parse(str);
while (newArr.length > 0) {
document.write(newArr.pop() + "<br/>");
}
// Output:
// ["a","b","c"]
// c
// b
// a
示例
reviver 函數通常用於將國際標準化組織 (ISO) 日期字符串的 JSON 表示形式轉換爲協調世界時 (UTC) 格式日期對象。 此示例使用 JSON.parse 來反序列化 ISO 格式的日期字符串。dateReviver函數爲格式爲 ISO 日期字符串的成員返回Date對象。
var jsontext = '{ "hiredate": "2008-01-01T12:00:00Z", "birthdate": "2008-12-25T12:00:00Z" }';
var dates = JSON.parse(jsontext, dateReviver);
document.write(dates.birthdate.toUTCString());
function dateReviver(key, value) {
var a;
if (typeof value === 'string') {
a = /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*)?)Z$/.exec(value);
if (a) {
return new Date(Date.UTC(+a[1], +a[2] - 1, +a[3], +a[4],
+a[5], +a[6]));
}
}
return value;
};
// Output:
// Thu, 25 Dec 2008 12:00:00 UTC
要求
在以下文檔模式中受到支持:Internet Explorer 8 標準模式、Internet Explorer 9 標準模式、Internet Explorer 10 標準模式、Internet Explorer 11 標準模式。此外,也在應用商店應用(Windows 8 和 Windows Phone 8.1)中受支持。請參閱 版本信息。
在以下文檔模式中不受支持:Quirks、Internet Explorer 6 標準模式、Internet Explorer 7 標準模式。
五、參閱