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

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

2016-02-05 09:26 746 查看
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) ;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: