脚本宝典收集整理的这篇文章主要介绍了js实例教程-JSON基本概念及JSON对象的静态方法讲解,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。小宝典致力于为广大程序猿(媛)提供高品质的代码服务,请大家多多光顾小站,小宝典在此谢过。
JavaScript Object Notation——js对象表示法
存储和交换文本信息的语法,属于独立性语言
每个 JSON 对象就是一个值,值的类型和格式有严格规定:
复合类型的值只能是数组或对象,不能是函数、正则表达式对象、日期对象。 原始类型的值只有四种:字符串、数值(必须以十进制表示)、布尔值和null(不能使用NaN, InfinITy, -infinity和undefined)。 字符串必须使用双引号表示,不能使用单引号。 对象的键名必须放在双引号里面。 数组或对象最后一个成员的后面,不能加逗号。
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 Object Notation——js对象表示法
存储和交换文本信息的语法,属于独立性语言
每个 JSON 对象就是一个值,值的类型和格式有严格规定:
复合类型的值只能是数组或对象,不能是函数、正则表达式对象、日期对象。 原始类型的值只有四种:字符串、数值(必须以十进制表示)、布尔值和null(不能使用NaN, Infinity, -Infinity和undefined)。 字符串必须使用双引号表示,不能使用单引号。 对象的键名必须放在双引号里面。 数组或对象最后一个成员的后面,不能加逗号。
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,请注明来意。