3/07/2016 King Tzeng
JSON.parse 函式
將以 JavaScript 物件標記法 (JavaScript Object Notation,JSON) 表示的字串轉換成物件。
JSON.parse(text [, reviver])
- text
必要項。有效的 JSON 字串。
- reviver
選擇項。用來轉換結果的函式。呼叫這個函式時,會針對這個物件的每個成員進行呼叫。如果成員包含巢狀物件,則會先轉換巢狀物件,然後再轉換父物件。就個別成員而言,發生的情況如下:
如果 reviver 傳回有效值,轉換後的值會取代成員值。
如果 reviver 的傳回值與它接收的值相同,則不會修改成員值。
如果 reviver 傳回 null 或 undefined,就表示成員已刪除。
如果這個函式導致 JavaScript 剖析器錯誤 (例如「SCRIPT1014:無效的字元」),表示輸入的文字不符合 JSON 語法。若要修正錯誤,請執行下列一項動作:
下面範例會使用 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:
// ["a","b","c"]
// c
// b
// a
reviver 函式通常是用來將以 JSON 字串表示的「國際標準組織」(International Organization for Standardization,ISO) 日期字串轉換成具有「國際標準時間」(Coordinated Universal Time,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) {
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 標準。
文件轉自:https://msdn.microsoft.com/zh-tw/library/cc836466(v=vs.94).aspx
0 留言:
張貼留言