您的位置:首页 > Web前端 > JavaScript

JSON是什么?

2017-05-27 23:12 453 查看
JSON(JavaScript Object Notation)是一种存储数据的格式,并不是一种编程语言。

在过去,开发者常常用xml格式来传输数据,这个比较突出的一点是服务器与服务器通信,但是这种格式比较复杂,并且处理数据时操作也不简单。

相比于xml,JSON表示数据更加简便一些,访问起来也比较容易。

那么如何用JSON来表示数据

简单数据

比如

"Hellen"  //字符串
20         //数字


JSON也支持Null和Boolean,但是没有undefined。需要注意的是:JSON格式表示的字符串必须是双引号括起来的,与JavaScript字符串是不同的。

2. 对象

JavaScript的对象是这样表示的:

var Person = {
name : 'Liu',
age: 22,
job: 'student'
};


这个对象用JSON格式表示如下面代码:

{
"name": "Liu",
"age": 22,
"job": "student"
}


可以看出与JavaScript对象有这么几个不同:

不用变量来表示

字符串都是双引号括起来的

末尾没有分号(因为JSON表示的并不是一条语句,只是一部分数据)

3.数组

在JS中,数组表示如下:

var arr = [12,"Liu",15,"Yang,10];


与上面表示对象的格式类似,JSON表示数组如下:

[12,“Liu”,15,“Yang”,10]


当然,也可以把这些类型结合起来构成更复杂点的数据,我们可以写一个表示几个person的JSON数据:

[
{
"name" : "Liu",
"age" : 22,
"height":160,
"job" : "student"
},
{
"name" : "Yang",
"age" : 25,
"height":170,
"job" : "student"
},
{
"name" : "Chen",
"age" : 24,
"height":162,
"job" : "student"
},
{
"name" : "Darling",
"age" : 24,
"height":160,
"job" : "accountant"
}
]


我们知道了JSON可以用来表示数据,那么如何来用呢?这就涉及到解析和序列化

在定义了JSON数据之后,它可以解析成JS对象,这样就可以访问一些特定数据。同样,我们也可以把一个包含数据的JS对象序列化成JSON格式。ES5对解析JSON的行为进行规范,定义了全局对象JSON。JSON对象有两种方法:Stringify()和Parse()。

stringify()和序列化选项

var person = {
name : "Liu",
age : 22,
height:160,
job : "student"
}
JSON.stringify(person);
//变成了JSON字符串
//"{"name":"Liu","age":22,"height":160,"job":"student"}"


这是没有序列化选项的情况,有什么需要增加一些序列化条件,stringify()会接受另外两个参数,第一个参数是过滤选项,可以是数组,也可以是过滤函数;第二个参数是是否缩进,如果是数字表示,那么表示缩进多少个字符;如果是字符,表示用该类字符来缩进

下面主要示例第一个参数的用法:

var person = {
name : "Liu",
age : 22,
height:160,
job : "student"
}
JSON.stringify(person, ["name", "height"]);
//得到的结果即将参数数组中的两个属性过滤掉了
//"{"name":"Liu","height":160}"

JSON.stringify(person, function(key, value){
//key就表示的是JS对象中的属性名, value是该属性本身的值
switch(key)
{
case "age" :
return value + 3;
case "job":
if(value == "student")
return "Good " + value;
default: //一定要加deault
return value;
}
});
//"{"name":"Liu","age":25,"height":160,"job":"Good student"}"


2.parse()和解析选项

var person = {
name : "Liu",
age : 22,
height:160,
job : "student"
}
var JSONStr = JSON.stringify(person);
JSON.parse(JSONStr);
//Object {name: "Liu", age: 22, height: 160, job: "student"}


该方法可以接受另一个参数,这个参数与stringify()的过滤函数用法相似,这里也不再做过多的解释。

对于JSON这里就介绍这么多,请记住:JSON只是存储数据的一种格式,好处就是访问数据可以很方便,不像xml那样复杂。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  javascript json