js实例教程-JSON基本概念及JSON对象的静态方法讲解

发布时间:2018-11-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了js实例教程-JSON基本概念及JSON对象的静态方法讲解脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
小宝典致力于为广大程序猿(媛)提供高品质的代码服务,请大家多多光顾小站,小宝典在此谢过。

JSON基本概念

JavaScript Object Notation——js对象表示法

存储和交换文本信息的语法,属于独立性语言

每个 JSON 对象就是一个值,值的类型和格式有严格规定:

复合类型的值只能是数组或对象,不能是函数、正则表达式对象、日期对象。 原始类型的值只有四种:字符串、数值(必须以十进制表示)、布尔值和null(不能使用NaN, InfinITy, -infinity和undefined)。 字符串必须使用双引号表示,不能使用单引号。 对象的键名必须放在双引号里面。 数组或对象最后一个成员的后面,不能加逗号。

JSON 对象的静态方法

JSON.stringify()

基本用法:

 // 将一个值转为 JSON 字符串 // 可以被JSON.parse方法还原  JSON.stringify('abc') // ""abc"" JSON.stringify([1, "false", false]) // '[1,"false",false]'  // 如果对象的属性是undefined、函数或 XML 对象,该属性会被JSON.stringify过滤。 VAR obj = {   a: undefined,   b: function () {} }; JSON.stringify(obj) // "{}"  // 如果数组的成员是undefined、函数或 XML 对象,则这些值被转成null。 var arr = [undefined, function () {}]; JSON.stringify(arr) // "[null,null]"  // 正则对象会被转成空对象 JSON.stringify(/foo/) // "{}"  // JSON.stringify方法会忽略对象的不可遍历属性。 var obj = {}; Object.definePRoPErties(obj, {   'foo': {     value: 1,     enumerable: true   },   'bar': {     value: 2,     enumerable: false   } });  JSON.stringify(obj); // "{"foo":1}"

第二个参数:

 // 第二个参数是数组时,指定需要转成字符串的属性,相当于筛选(白名单) // 只对对象的属性有效,对数组无效。 var obj = {   'prop1': 'value1',   'prop2': 'value2',   'proP3': 'value3' }; var selectedProperties = ['prop1', 'prop2']; JSON.stringify(obj, selectedProperties) // "{"prop1":"value1","prop2":"value2"}"  // 第二个参数是一个函数时,用来更改JSON.stringify的返回值。 // 递归处理,第一次键名为空,键值是整个对象 // 如果处理函数返回undefined或没有返回值,则该属性会被忽略。 var o = {a: 1}; function f(key, value) {   if (typeof value === 'object') {     return {b: 2};   }   return value * 2; } JSON.stringify(o, f)// "{"b": 4}" 

第三个参数:

 // 用于增加返回的 JSON 字符串的可读性 // 该参数如果是数字,表示每个属性前面添加的空格(最多不超过10个) // 如果是字符串(不超过10个字符),则该字符串会添加在每行前面。 JSON.stringify({ p1: 1, p2: 2 }, null, 2); /* "{   "p1": 1,   "p2": 2 }" */  JSON.stringify({ p1:1, p2:2 }, null, '|-'); /* "{ |-"p1": 1, |-"p2": 2 }" */

参数对象的 toJSON 方法:

如果参数对象有自定义的toJSON方法,那么JSON.stringify会使用这个方法的返回值作为参数,而忽略原对象的其他属性。

 // 小应用:将正则对象自动转为字符串  var obj = {   reg: /foo/ }; // 不设置 toJSON 方法时 JSON.stringify(obj) // "{"reg":{}}" // 设置 toJSON 方法时 RegExp.prototype.toJSON = RegExp.prototype.toString; JSON.stringify(/foo/) // ""/foo/""

JSON.parse()

 // 解析JSON 字符串 JSON.parse('{}') // {} JSON.parse('true') // true  // 第二个参数,处理函数 function f(key, value) {   if (key === 'a') {     return value + 10;   }   return value; }  JSON.parse('{"a": 1, "b": 2}', f) // {a: 11, b: 2}

JSON基本概念

JavaScript Object Notation——js对象表示法

存储和交换文本信息的语法,属于独立性语言

每个 JSON 对象就是一个值,值的类型和格式有严格规定:

复合类型的值只能是数组或对象,不能是函数、正则表达式对象、日期对象。 原始类型的值只有四种:字符串、数值(必须以十进制表示)、布尔值和null(不能使用NaN, Infinity, -Infinity和undefined)。 字符串必须使用双引号表示,不能使用单引号。 对象的键名必须放在双引号里面。 数组或对象最后一个成员的后面,不能加逗号。

JSON 对象的静态方法

JSON.stringify()

基本用法:

 // 将一个值转为 JSON 字符串 // 可以被JSON.parse方法还原  JSON.stringify('abc') // ""abc"" JSON.stringify([1, "false", false]) // '[1,"false",false]'  // 如果对象的属性是undefined、函数或 XML 对象,该属性会被JSON.stringify过滤。 var obj = {   a: undefined,   b: function () {} }; JSON.stringify(obj) // "{}"  // 如果数组的成员是undefined、函数或 XML 对象,则这些值被转成null。 var arr = [undefined, function () {}]; JSON.stringify(arr) // "[null,null]"  // 正则对象会被转成空对象 JSON.stringify(/foo/) // "{}"  // JSON.stringify方法会忽略对象的不可遍历属性。 var obj = {}; Object.defineProperties(obj, {   'foo': {     value: 1,     enumerable: true   },   'bar': {     value: 2,     enumerable: false   } });  JSON.stringify(obj); // "{"foo":1}"

第二个参数:

 // 第二个参数是数组时,指定需要转成字符串的属性,相当于筛选(白名单) // 只对对象的属性有效,对数组无效。 var obj = {   'prop1': 'value1',   'prop2': 'value2',   'prop3': 'value3' }; var selectedProperties = ['prop1', 'prop2']; JSON.stringify(obj, selectedProperties) // "{"prop1":"value1","prop2":"value2"}"  // 第二个参数是一个函数时,用来更改JSON.stringify的返回值。 // 递归处理,第一次键名为空,键值是整个对象 // 如果处理函数返回undefined或没有返回值,则该属性会被忽略。 var o = {a: 1}; function f(key, value) {   if (typeof value === 'object') {     return {b: 2};   }   return value * 2; } JSON.stringify(o, f)// "{"b": 4}" 

第三个参数:

 // 用于增加返回的 JSON 字符串的可读性 // 该参数如果是数字,表示每个属性前面添加的空格(最多不超过10个) // 如果是字符串(不超过10个字符),则该字符串会添加在每行前面。 JSON.stringify({ p1: 1, p2: 2 }, null, 2); /* "{   "p1": 1,   "p2": 2 }" */  JSON.stringify({ p1:1, p2:2 }, null, '|-'); /* "{ |-"p1": 1, |-"p2": 2 }" */

参数对象的 toJSON 方法:

如果参数对象有自定义的toJSON方法,那么JSON.stringify会使用这个方法的返回值作为参数,而忽略原对象的其他属性。

 // 小应用:将正则对象自动转为字符串  var obj = {   reg: /foo/ }; // 不设置 toJSON 方法时 JSON.stringify(obj) // "{"reg":{}}" // 设置 toJSON 方法时 RegExp.prototype.toJSON = RegExp.prototype.toString; JSON.stringify(/foo/) // ""/foo/""

JSON.parse()

 // 解析JSON 字符串 JSON.parse('{}') // {} JSON.parse('true') // true  // 第二个参数,处理函数 function f(key, value) {   if (key === 'a') {     return value + 10;   }   return value; }  JSON.parse('{"a": 1, "b": 2}', f) // {a: 11, b: 2}

觉得可用,就经常来吧!Javascript技巧 脚本宝典 欢迎评论哦! js技巧,巧夺天工,精雕玉琢。小宝典献丑了!

脚本宝典总结

以上是脚本宝典为你收集整理的js实例教程-JSON基本概念及JSON对象的静态方法讲解全部内容,希望文章能够帮你解决js实例教程-JSON基本概念及JSON对象的静态方法讲解所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。