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":234     "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对象

0 0
原创粉丝点击