JSON.parse 函数 (JavaScript)
2016-05-10 17:10
459 查看
将 JavaScript 对象表示法 (JSON) 字符串转换为对象。
一、语法:
text
必需。 一个有效的 JSON 字符串。
reviver
可选。 一个转换结果的函数。 将为对象的每个成员调用此函数。 如果成员包含嵌套对象,则先于父对象转换嵌套对象。 对于每个成员,会发生以下情况:如果 reviver 返回一个有效值,则成员值将替换为转换后的值。
如果 reviver 返回它接收的相同值,则不修改成员值。
如果 reviver 返回 null 或 undefined,则删除了该成员。
三、返回值:
一个对象或数组。
四、异常:
如果此函数引发 JavaScript 分析器错误(如“SCRIPT1014:无效字符”),则输入文本将不遵循 JSON 语法。 若要更正此错误,请执行下列操作之一:修改 text 参数以遵循 JSON 语法。 有关更多信息,请参见 JSON 对象的 BNF 语法表示法。例如,如果响应的格式为 JSONP 而非纯 JSON,请在响应对象上尝试此代码:
确保通过 JSON 兼容的实现(如 text)对 JSON.stringify 参数进行序列化。
在 JSON 验证程序(如 JSLint)中运行 text 参数以帮助找到语法错误。
五、参阅
JSON.stringify 函数 (JavaScript)
toJSON 方法 (Date) (JavaScript)
一、语法:
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 标准模式。五、参阅
JSON.stringify 函数 (JavaScript)
toJSON 方法 (Date) (JavaScript)
相关文章推荐
- 實際案例: 已知要獲取臨時票証 (JsApi Ticket) 才能調用的接口
- js中encode、decode的应用说明
- 在.NET使用JSON作为数据交换格式【转】
- JS上传组件FileUpload自定义模板的使用方法
- 如何使用chrome自带的Javascript调试工具
- C# 解析json Newtonsoft.Json
- javascript关于继承解析
- JS判断字符是否为数字类型
- 系统自带的NSJSONSerialization解析json文件
- 《高性能javascript》 领悟随笔之-------DOM编程篇(二)
- JSTL的if判断
- JSONKit解析json数据
- Servlet & JSP - UrlRewriteFilter
- JavaScript继承学习笔记【新手必看】
- 实例讲解使用原生JavaScript处理AJAX请求的方法
- Web页面向后台提交数据的方式和选择
- 使用dragloader.js插件实现上拉加载/下拉刷新..
- JS中的split()对多个分隔符的处理
- JavaScript 三种创建对象的方法
- JS原型和原型链