JSON详解
来源:互联网 发布:设备铭牌制作软件 编辑:程序博客网 时间:2024/06/05 18:35
首先要知道JSON是一种轻量级的数据格式,不是一种编程语言,因此其他语言也可以使用。
一、JSON语法
JSON语法可以表现为下面三种值:
1.简单值:字符串、数值、布尔值和null,如"hello json",3,false,null。但是JSON不支持undefined
2.对象:一种复杂的数据类型,表示的是一组无序的键值对,栗子如下:
1 {2 "name":"guozhu",3 "age":23,4 "hobby":{5 "sport":"bicyle",6 "music":"guoge"7 }8 }//每个键值对中的值可以是简单值也可以是复杂数据类型的值
3.数组:与对象一样也是复杂的数据类型,但是它表示的是一组有序的列表,因此可以通过索引值来访问。
[ "xiaohua",23,{ "hobby":"bicyle", "eat":"apple" }]//数组的值可以是简单值、复杂数据类型的值
二、JSON与JS
相同点:JSON简单值与JS语法相同
不同点:1.JSON字符串与JS字符串区别在于JSON字符串必须使用双引号
2.JSON对象没有声明变量、没有末尾分号且对象的属性必须加双引号
3.JSON数组与JSON对象一样没有变量和分号
三、JSON.stringify()方法
stringify()方法用于将JS对象转化为JSON字符串,此方法有三个参数:第一个参数JS对象、第二个参数过滤器、第三个参数是一个选项表示是否在JSON字符串中保留缩进
1 // JS对象2 var person = {3 name:"xiaohua",4 age:195 }6 var joPerson = JSON.stringify(person);7 console.log(joPerson);//{"name":"xiaohua","age":19}
上面代码只传入JS对象,打印结果已注释出来,可以看到stringify()输出的JSON字符串不包含空格字符或缩进
现在传入第二个参数过滤器(可以是一个数组或函数)打印一下
1 var person = {2 name:"xiaohua",3 age:19,4 }5 var joPerson = JSON.stringify(person,["age"]);6 console.log(joPerson)//{"age":19}
上面代码第二个参数传入的是一个数组,其中有一个字符串与person对象的属性相对应,打印出来的结果也只包含与其对应属性的值
现在传入第三个参数(数值或字符串)用于缩进
1 var person = {2 name:"xiaohua",3 age:19,4 }5 var joPerson = JSON.stringify(person,null,"**");6 console.log(joPerson);
打印出来的结果如下图
如上面代码传入的是一个字符串而非数值,则这个字符串在打印出来的JSON字符串中被用作缩进字符串
四、JSON.parse()方法
该方法用于将JSON字符串解析成JS对象
1 var person = {2 name:"xiaohua",3 age:19,4 }5 var joPerson = JSON.stringify(person);6 console.log(joPerson);//{"name":"xiaohua","age":19}7 var jsPerson = JSON.parse(joPerson);8 console.log(jsPerson);
上面代码先用JSON.stringify()方法将person对象转换成JSON字符串,再利用JSON.parse()方法将joPerson(JSON字符串)转换成JS对象
小结:
1.JSON是一个轻量级的数据格式
2.JSON使用JavaScript语法的子集表示对象、数组、字符串、数值、布尔值和null
3.JSON.stringify()方法将JS对象转换成JSON字符串
4.JSON.parse()方法将JSON字符串转换成JS对象
- JSON 详解
- JSON详解
- JSON详解
- JSON详解
- JSON详解
- JSON详解
- json 详解
- json详解
- JSON详解
- JSON详解
- JSON详解
- json详解
- JSON详解
- JSON详解
- JSON详解
- JSON详解
- json详解
- Json详解
- 史上最简单的 SpringCloud 教程 | 第一篇: 服务的注册与发现(Eureka)
- 创建catkin_ws工作空间出现catkin_make错误解决方法
- 2017 蓝桥杯省赛c/c++ B组 K区间和
- 浏览器兼容性-JS篇
- Springboot配置文件的使用
- JSON详解
- 神经网络训练技巧入门
- MongoDB 存储引擎:WiredTiger和In-Memory
- indexOf、instanceOf、typeOf、valueOf详解
- 天地图+GeoServer WMS图层样例
- 对象继承
- Android中对应用程序进行签名的两种方法
- Unity3D 通用麻将胡牌算法
- MySQL系列之五:explain执行计划分析