JSON

JSON简介

JSON指的是JavaScript对象表示法(JavaScript Object Notation)
JSON用来存储和交换文本信息
JSON是纯文本的
JSON具有自我描述性
JSON具有层级结构
JSON可通过JavaScript进行解析
JSON数据可以使用AJAX进行传输
JSON语法

JSON语法是JavaScript语法的子集
JSON数据的书写格式是:名称/值对
JSON值
	数字(整数或浮点数)
	字符串(在双引号中)
	逻辑值(true 或 false)
	数组(在方括号中)
	对象(在花括号中)
	null
数据由逗号分隔
var txt = '{"student":[{"name":"lwc","age":26},{"name":"nxj","age":24}]}';
	创建一个单独成员student对象,此成员包含两个对象name,age的数组
两种JSON数组遍历的两种方法

<script>
	var JSONObject= [
		{
			"name":"lwc",
			"age":26
		},{
			"name":"nxj",
			"age":24
		}
	]
	for(var j in JSONObject){
		alert(JSONObject[j].name)
	}
	for(var i=0;i<JSONObject.length;i++){
		alert(JSONObject[i].name)
	}
</script>

<script>
	var txt = '{"student":[{"name":"lwc","age":26},{"name":"nxj","age":24}]}';
	var obj = eval('('+txt+')');
	var arry = obj.student;
	for(var i=0;i<arry.length;i++){
		alert(arry[i].name)
	}
</script>
JSON文件

JSON文件的文件类型是 .json
JSON文本的MIME类型是 application/json
JSON文本转换为JavaScript对象

name: <span id="name"></span><br />
age: <span id="age"></span><br />

使用JavaScript函数eval()可用于将JSON文本转换为JavaScript对象
<script>
	var txt = '{"student":[{"name":"lwc","age":26}]}';
	var obj = eval('('+txt+')');
	var arry = obj.student;
	document.getElementById("name").innerHTML=arry[0].name;
	document.getElementById("age").innerHTML=arry[0].age;
</script>

使用JSON解析器将JSON字符串转换为对象(IE8以下版本不支持JSON对象)
<script>
	var txt = '{"student":[{"name":"lwc","age":26}]}';
	var obj = JSON.parse(txt);
	var arry = obj.student;
	document.getElementById("name").innerHTML=arry[0].name;
	document.getElementById("age").innerHTML=arry[0].age;
</script>
IE6,IE7下JSON.parse JSON未定义的解决方法

方法一:
	<script>
		var txt = '{"student":[{"name":"lwc","age":26}]}';  
		var obj;  
		if (typeof(JSON) == 'undefined'){  
		     obj = eval("("+txt+")");  
		}else{  
		     obj = JSON.parse(txt);  
		}
	</script>
方法二:调用json2.js(推荐)
	<script type="text/javascript" src="js/json2.js"></script>
	<script>
		var txt = '{"student":[{"name":"lwc","age":26}]}';
		var obj = JSON.parse(txt);
		var arry = obj.student;
		document.getElementById("name").innerHTML=arry[0].name;
		document.getElementById("age").innerHTML=arry[0].age;
	</script>
	json2.js下载地址 http://download.csdn.net/detail/itlwc/5893971
eval() vs JSON.parse() vs JSON.stringify()

eval()
	使用eval()讲JSON文本转换为对象,eval()是调用JavaScript编译器
	由于JSON是JavaScript的子集,因此编译器正确的解析文本产生对象
	eval()非常快速,他可以编译执行任何JavaScript,因此产生了安全性问题
	当使用可信任,完善的JavaScript程序时才可以使用eval()
	使用XMLHttpRequest的web应用,页面之间通讯是同源的,因此是可信任的,但不完善
	如果服务器没有严谨的JSON编码,或者没有严格的输入验证,那么可能传送包括危险脚本的无效JSON文本
	eval()将执行恶意的脚本
JSON.parse()
	JSON.parse()解析器只能辨识JSON文本,拒绝所有脚本
	提供了本地JSON支持的浏览器的JSON解析器将远快于eval函数
	预计未来的ECMAScript标准将支持本地JSON
JSON.stringify()
	JSON.stringify()进行反向操作,可以将JavaScript转换为JSON文本
	JSON不支持循环数据,因此不要为JSON.stringify()提供循环数据
	案例
		<script>
			var txt = {"name":"lwc","age":26};
			var str = JSON.stringify(txt);
			alert(str);
		</script>

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值