將 JavaScript 對象表示法 (JSON) 字符串轉換爲對象。
JSON.parse(text [, reviver])
如果此函數引發 JavaScript 分析器錯誤(如“SCRIPT1014:無效字符”),則輸入文本將不遵循 JSON 語法。 若要更正此錯誤,請執行下列操作之一:
修改 text 參數以遵循 JSON 語法。 有關更多信息,請參見 JSON 對象的 BNF syntax notation(BNF 語法表示法)。
確保通過 JSON 兼容的實現對文本參數進行序列化,例如 JSON.stringify。
以下示例使用 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);
// Output: Aaberg, Jesper
以下示例演示瞭如何使用 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:
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) 格式 Date 對象。
此示例使用 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) {
returnnewDate(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