JSON简介
- JSON指的是JavaScript对象表示法(JavaScript Object Notation)。
- JSON是轻量级的文本数据交换格式。
- JSON是存储和交换文本信息的语法。类似xml。
- JSON比xml更小、更快,更易解析。
- JSON独立于语言:JSON使用JavaScript语法来描述数据对象,但是JSON仍然独立于语言和平台。JSON解析器JSON库支持许多不同的编程语言。目前非常多的动态编程语言(PHP、JSP、.NET)都支持JSON。
- JSON具有自我描述性,更易理解。
- JSON文本格式在语法上与创建JavaScript对象的代码相同。由于这种相似性,无需解析器,JavaScript程序能够使用内建的eval()函数,用JSON数据来生成原生的JavaScript对象。
1.JSON语法规则:
数据在名称/值对中
数据由逗号分隔
大括号保存对象
中括号保存数组
2.JSON 名称/值对
JSON数据的书写格式是:名称/值对
例:“name”:“tom” 等价于 name=“tom”
3.JSON值
JSON值可以是数字、字符串、逻辑值、数组、对象、null
JSON对象
-
对象语法
实例:{“name”:“zhangsan”,“age”:20,“sex”:“男”}
JSON对象使用在大括号({})中书写。
对象可以包含多个key/value(键/值)对。
key必须是字符串,value可以是合法的JSON数据类型(字符串、数字、对象、数组、布尔值或null)。
key和value中使用使用冒号(:)分隔。
每个key/value对使用逗号(,)分隔。 -
访问对象值
可是使用点号(.)来访问对象的值,也可以使用中括号([ ])来访问对象的值。//访问对象值 var obj={"name":"zhangsan","age":20}; document.write(obj.name+"<br/>"); document.write(obj["age"]+"<br/>");
-
循环对象
可以使用for-in来循环对象的属性//循环遍历对象 var car={"name":"audi","color":"red","speed":300}; for(x in car){ document.write(car[x]+"<br/>"); }
-
嵌套JSON对象
JSON对象中可以包含另外一个JSON对象嵌套JSON对象
var user={ "name":"eric", "age":18, "sex":"女", "account":{ "taobao":"t123", "jingdong":"j123", "baidu":"b123" } }; document.write(user.account.taobao+"<br/>"); for(u in user.account){ document.write(user.account[u]+"<br/>"); }
-
JSON对象和JSON字符串的区别
JSON对象
var str1={"name":"zhangsan","sex":"man"};
JSON字符串
var str2='{"name":"wangwu","sex":"man"}';
JSON数组
-
JSON数组在中括号中书写。
-
JSON中数组值必须是合法的JSON数据类型(字符串、数字、对象、数组、布尔值或null)
-
数组作为JSON对象
//数组作为JSON对象 var site=["baidu","tengxun","alibaba"]; document.write(site[0]+"<br/>");
-
JSON对象中的数组
可以使用索引值来访问数组,也可以使用for循环或for-in循环来访问数组var user={ "name":"zhangsan", "age":20, "hobby":["swimming","running","playgame"] }; //使用索引值访问数组 document.write(user.hobby[1]); //使用for循环遍历循环数组 for(var i=0;i<user.hobby.length;i++){ document.write(user.hobby[i]); } //使用for-in循环遍历数组 for(i in user.hobby){ document.write(user.hobby[i]); } //修改数组值 user.hobby[0]="sing"; //删除数组元素 delete user.hobby[2];
JSON.parse()
- JSON通常用于与服务端交换数据。在接收服务器数据时一般是字符串。我们可以使用JSON.parse()方法将数据转换为JavaScript对象。
- 语法:JSON.parse(text,[reviver])。
- 参数说明:text:必须,一个有效的JSON字符串。reviver:可选,一个转换结果的函数,将为对象的每个成员调用此函数。
//JSON解析实例
var obj=JSON.parse('{"name":"zhangsan","age":20}');
document.write(obj.name+":"+obj.age);
eval()函数
JavaScript函数eval()可用于将JSON文本转换为JavaScript对象。eval()函数使用的是JavaScript编译器,可解析JSON文本,然后生成JavaScript对象。
var txt='{"user":['+
'{"account":"admin","pwd":"admin"},'+
'{"account":"user","pwd":"user"}]}';
var obj=eval("("+txt+")");
document.write(obj.user[0].account);
JSON实例
为什么使用JSON?
对于Ajax应用程序来说,JSON比xml更快更易使用。
var json={
"name":"搜狐",
"url":"www.sohu.com"
};
window.onload=function(){
document.getElementById("name").innerHTML="<a href='http://www.sohu.com'>"+json.name+"</a>";
document.getElementById("url").innerText=json.url;
}
......
<p>
网站名称:<span id="name"></span><br/>
网站地址:<span id="url"></span><br/>
</p>