欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

原来JSON还可这样玩着

发布时间:2023/12/18 54 豆豆
生活随笔 收集整理的这篇文章主要介绍了 原来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还可这样玩着的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。