JSON基础知识(整理自JavaScript高级程序设计第三版)

JSON(JavaScript Object Notation,JavaScript对象表示法)是一种数据格式,与XML相比更加简便,而且不用创建DOM对象。

JSON有三种类型的值:

简单值:可以表示字符串,数字,布尔和null。但是没有undefined 。比如 5 和 “hello world”都是简单值。

对象:

JavaScript中的对象表示:

var person = {

name: "kong" ;

age: 23 ;

};

在JSON中:

{

"name" : "kong" ,

"age" : 23 

}

两者相比JSON中没有变量的概念。其次没有末尾的分号。而且对象的属性值必须加引号!而且应该是双引号。

数组:

JavaScript中的数组:

var values = ["hi",true,25] ;

在JSON中:

["hi",25,true]

与XML需要解析成DOM的繁琐相比,JSON在解析为JavaScript对象后,可以直接通过 . 的方式获得数据。

stringify()是把JavaScript对象序列化为JSON对象的方法。

var book = {

title : "profeddional javscript" ,

authors: ["kong"], 

edition:3 ,

year: 2011

} ;

var jsontext = JSON.stringify(book) ;

会得到一个JSON字符串,保存到jsontext中。默认情况下不包括空格和缩进。jsontext如下:

{"title" : "profeddional javscript" ,"authors": ["kong"], "edition":3 ,"year": 2011}

stringify()还可以接受另外两个参数。第二个参可以过滤转化为JSON的属性:

var book = {

title : "profeddional javscript" ,

authors: ["kong"], 

edition:3 ,

year: 2011

} ;

var jsontext = JSON.stringify(book,["titile","edition"]) ;//转化的JSON字符串中只包括title属性和edition属性。

第二个参数也可以是函数。

var book = {

title : "profeddional javscript" ,

authors: ["kong"], 

edition:3 ,

year: 2011

} ;

var jsontext = JSON.stringify(book,function(key,value){   

switch(key){ 

case "authors":  return value.join(",") ;  

case "year":  return 5000 ;

case "edition":  return undefined ;

default:  return value ;

}

}) ;

jsontext结果:{"title":"profeddional javscript","authors":"kong","year":5000}

第三个参数为控制缩进和换行。如果这个参数为一个数字,那么他表示每个级别缩进的空格数。

var jsontext = JSON.stringify(book,function(key,value){   

switch(key){ 

case "authors":  return value.join(",") ;  

case "year":  return 5000 ;

case "edition":  return undefined ;

default:  return value ;

}

},4) ;

这样JSON字符串就有缩进了。第三个参数也可以是字符串,这样会有这样一个字符串来代替空格。

var jsontext = JSON.stringify(book,function(key,value){   

switch(key){ 

case "authors":  return value.join(",") ;  

case "year":  return 5000 ;

case "edition":  return undefined ;

default:  return value ;

}

},“- -”) ;

还有一个toJSON()的方法。比如:

var book = {
title : "profeddional javscript",
authors: ["kong"], 
edition: 3 ,
year: 2011 ,
toJSON: function(){return this.title ;}
};
var jsontext = JSON.stringify(book) ;
alert(jsontext) ;

结果:"profeddional javscript"

这样jasontext就只会有title这个属性了。


JSON.parse()方法是把JSON的序列转化成JavaScript对象。也就是stringify的逆向。

var bookCopy = JSON.parse(jsontext) ;




评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值