原来JSON还可这样玩着
JOSN
JSON是一种数据格式,是JavaScript Object Notation的缩写。JSON作为JavaScript的一个严格子集,使用了JavaScript中的一些模式来表示结构化数据。
❏ 简单值:使用与JavaScript相同的语法,可以在JSON中表示字符串、数值、布尔值和null。但JSON不支持JavaScript中的特殊值undefined。❏ 对象:对象作为一种复杂数据类型,表示的是一组无序的键值对儿。而每个键值对儿中的值可以是简单值,也可以是复杂数据类型的值。❏ 数组:数组也是一种复杂数据类型,表示一组有序的值的列表,可以通过数值索引来访问其中的值。数组的值也可以是任意类型——简单值、对象或数组。
JSON不支持变量、函数或者对象实例。虽然JSON看起来和对象有点相似,但是有几点区别之处:
1、JSON中没有变量的概念,所以在JSON中不能声明变量;
2、JOSN末尾没有分号;
3、JSON中的属性必须加上双引号。
JSON的两个方法
1、JSON.stringify(),把JavaScript对象转化为JSON字符串,在转化的过程中,对象里的函数或者原型成员都会被忽略,属性值为undefined的属性也会被跳过;
JSON.stringify()接受三个参数:
必选:需要序列化的JavaScript对象;
过滤器【可选】:可以是数组、函数;
可选:表示是否在JSON字符串中保留缩进。
const _json = {name:"读心悦",age:28 }const _json1 = JSON.stringify(_json,["name"]) console.log(_json);console.log(_json1)如果过滤器是一个数组,数组中每一项要和将要序列化的对象中属性一一对应,这样在返回的结果字符串中只会包含对应的属性。
如果过滤器是一个函数,那么这个函数接收两个参数:属性名和属性值,函数根据属性名来判断如何处理需要序列化的对象中哪些属性。
const _json = {name: "读心悦",lat:"",age: 28,mon: [120, 234, 31, 654, 90] } const _json1 = JSON.stringify(_json, function (key, value) {switch (key) {case "name":return value;case "age":return value;case "mon":return value.join(",");case "lat":return "暂时未定位";default:return value;} }) console.log(_json);console.log(_json1)
JSON.stringify()的第三个参数:控制JSON字符串中的缩进和空白符,如下每一项要缩进4个空格;
const _json = {name: "读心悦",lat:"",age: 28,mon: [120, 234, 31, 654, 90] } const _json1 = JSON.stringify(_json,null,4) console.log(_json1)打印的结果:
{"name": "读心悦","lat": "","age": 28,"mon": [120,234,31,654,90] }
这个参数最大值为10个缩进空格,当设置的值大于10的时候,会自动转化为10。
const _json1 = JSON.stringify(_json,null,100) {"name": "读心悦","lat": "","age": 28,"mon": [120,234,31,654,90] }
另外,还有一个方法:toJSON(),这个方法是返回自身的JSON数据格式。可以给任何对象添加toJSON方的。
const _json = {name: "读心悦",lat:"",age: 28,mon: [120, 234, 31, 654, 90],toJSON:function(){return this.name} } const _json1 = JSON.stringify(_json) console.log(_json1); // "读心悦"如果给JSON.stringify()传入一个对象,那么在序列化该对象的顺序如下:
(1) 如果存在toJSON()方法而且能通过它取得有效的值,则调用该方法。否则,返回对象本身。
(2) 如果提供了第二个参数,应用这个函数过滤器。传入函数过滤器的值是第(1)步返回的值。
(3) 对第(2)步返回的每个值进行相应的序列化。
(4) 如果提供了第三个参数,执行相应的格式化。
2、JSON.parse(),把JSON字符串转化为相应的JavaScript的值,如果传给JSON.parse()的字符串不是有效的JSON,就会抛出异常。其实JSON.parse()方法可以说是JSON.stringify()的还原函数。除了接收一个JSON字符串之外,也可以接收另一个参数,是一个函数:
const _json = {name: "读心悦",lat: "",age: 28,mon: [120, 234, 31, 654, 90],test: {name: "青竹心"}, } const _json1 = JSON.stringify(_json) const _json2 = JSON.parse(_json1, function (key, value) {if(key=="name"){console.log("909090")} }) console.log(_json2);如果还原函数返回undefined,则表示要从结果中删除相应的键;如果返回其他值,则将该值插入到结果中
总结
以上是生活随笔为你收集整理的原来JSON还可这样玩着的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 每日英语(潮词)
- 下一篇: JavaScript几种继承方式