JSON.parse 函数
将JavaScript对象记号法(JSON)字符串转换成一个对象。
语法
JSON.parse(text [, reviver])
参数
text
必要参数。一个有效的JSON字符串。
reviver
可选参数。一个转换结果的函数。针对对象的每个成员调用此函数。如果某成员包含了嵌套对象,会在父对象之前先转换嵌套的对象。对于每个成员,会发生以下情况:
- 如果
reviver
返回一个有效的值,用转换的值替换成员值。 - 如果reviver返回它收到的相同的值,则不会修改此成员值。
- 如果reviver返回
null
或undefined
,此成员会被删除。
返回值
一个对象或数组。
异常
如果此函数导致一个JavaScript解析错误(譬如“SCRIPT1014:Invalid character”),则此输入文本并不遵循JSON语法。若要更正错误,请执行下列操作之一:
- 修改text参数以遵循JSON语法。欲进一步了解,请参阅JSON对象的BNF语法记号法。
例如,如果响应的格式为JSONP而非纯JSON,请在响应对象中尝试此代码:
var fixedResponse = response.responseText.replace(/\\'/g, "'"); var jsonObj = JSON.parse(fixedResponse);
- 请确保text参数由遵循JSON的编译器串行化,譬如
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)日期字符串的JSJON表示形式转换为协调世界时(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)中受支持。请参阅版本信息。
在以下文档模式中不受支持:Quicks、Internet Explorer 6标准模式、Internet Explorer 7标准模式。