JSON

一、JSON.pares()

JSON通常用于与服务器交换数据。在接收服务器数据时一般是字符串。

我们可以使用JSON.parse()方法将数据转换为JavaScript对象。

JSON.parse(text[,revier])
//text:必须,一个有效的JSON字符串.
//revier:可选,一个转换结构的函数,将为对象的每个成员调用此函数

JSON解析实例:

例如我们从服务器接收了以下数据:

{"name":"runoob","alexa":1000,"site":"www.runoob,com"}

我们使用JSON.parse()方法处理以上数据,将其转换为jacaScript对象:

var obj=JSON.parse('{"name":"runoob","alexa":1000,"sites":“www.runoob.com”}');

解析完成后,我们就可以在网页上使用JSON数据了:

<p id="demo"></p>

<script>
	var obj=JSON.parse('{"name":"runoob","alexa":1000,"sites":"www.runoob.com"}');
	doucument.getElementById("demo").innerHTml=obj.name+":"+obj.site;
</script>

可以使用AJAX从服务器请求JSON数据,并解析为JavaScript对象

 var xmlhttp=new XMLHTTpRequest();
xmlhttp.onreadystatechange==function(){
    if(this.readyState==4&&this.status==200){
        //获取的数据为JSON字符串
        myobj=JSON.parse(this.responseText);
        doucument.getElementById("demo").innerHTML=myobj.name;
    }
};
xmlhttp.open("GET","/try/ajax/json_demo.txt",true)l
xmlhttp.send();

可以使用JSON.parse的第二个参数reviver,一个转换结果的函数,对象的每个成员调用此函数。

var text='{"name":"Runoob","initDate":"2013-12-14","site":"www.runoob.com"}';
var obj=JSON.parse(text,function(key,value){
	if(key=="initDate"){
	//new Date()中的参数格式可以是整数,也可以是字符串
	//JSON不能存储Date对象,需要将其转换为字符串之后再将字符串转换为Date对象。
		return new Date(value);
	}else{
		//返回的是属性名作为函数名后返回的值
		return value;
	}
});
doucument.getElementById("demo").innerHTML=obj.name+"创建日期"+obj.initDate;

解析函数:

JSON不允许包含函数,但你可以将函数作为字符串存储,之后再将字符串转换为函数。json数据中外面是单引号,里面是双引号。

var text='{"name":"Runoob","alexa":"function(){return 10000}","sites":"www.runoob.com"}';
var obj=JSON.parse(text);
//eval(String)只接受原始字符串作为参数,String中含有要计算的JavaScript表达式或要执行的语句。
obj.alexa=eval("("+obj.alexa+")()");
console.log(obj.alexa);//1000

二、JSON.stringfy()

再向服务器发送数据时,JSON,stringify()方法将javaScript对象转换为字符串。

JSON.stringify(value[,replacer[,space]])
//value:  要转换的JavaScript值(通常为对象或数组);
//replacer: 用于转换结果的函数或数组。
//space:可选,文本添加缩进,空格和换行符,如果space是一个数字,则返回值文本在每个级别缩进指定数目的空格,如果space大于10,则文本缩进10个空格,space也可以使用非数字,如:\t;

javaScript数组转换

var arr=["Goole","Runoob","Tanbao","Facebook"];
var myJSON=JSON.stringify(arr);
document.getElementById("demo").innerHTML=myJSON;

解析数据:

因为JSON不能存储Date对象,JSON.stringify(),会将所有的日期转换为字符串。

解析函数:

JSON不允许包含函数,JSON.stringify()会删除JavaScript对象的函数,包括key和value.

解决方法:可以在执行JSON.stringify()函数前将函数转换为字符串来避免以上问题。

var obj={"name":"Runoob","alexa":function(){return 1000;},"sites":"www.runoob.com"};
obj.alexa=obj.alexa.toString();//将函数转换为字符串。
var myON=JSON.stringify(obj);

三、JSON使用

JSON最常见的用法之一,是从web服务器上读取JSON数据(作为文件或作为HttpRequest),将JSON数据转换为javaScript对象,然后在网页中使用改数据。

下面使用字符串作为输入进行演示(而不是文件)

创建json数据

var text='{"sites":['+
'{"name":"我是谁","url":"www.runoob.com"},'+
'{"name":"我是我","url":"www.rsagd.com"},'+
'{"name":"我是你","url":"www.safga.com"} ]}';

JSON语法是jacaScript语法的子集,javaScript函数eval()可用于将JSON文本转换为javaScript对象,该函数可解析JSON文本,然后生成javaScript对象,必须把文本包围在括号中,这样才能避免语法错误;

var obj=eval("("+text+")");
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值