-
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>
|