一、什么是JSON?
1、JSON指的是JavaScript对象表示法(JavaScript Object Notation)
2、JSON是轻量级的文本数据交换格式
3、JSON独立于语言
4、JSON具有自我描述性,更易理解
总结为一句话就是:JSON使用JavaScript语法来描述数据对象,但是JSON依然独立于语言和平台,JSON解析器和JSON库支持许多不同的编程语言
JSON本来用来表示JavaScript对象的一种书局文本格式,但是由于他的轻量级、易解析,操作等一些特点,渐渐的被很多语言支持
二、XML与JSON实例的比较:
1、使用XML表示中国部分省市的数据:
<?xml version="1.0" encoding="utf-8" ?>
<country>
<name>中国</name>
<province>
<name>黑龙江</name>
<citys>
<city>哈尔滨</city>
<city>大庆</city>
</citys>
</province>
<province>
<name>广东</name>
<citys>
<city>广州</city>
<city>深圳</city>
<city>珠海</city>
</citys>
</province>
<province>
<name>台湾</name>
<citys>
<city>台北</city>
<city>高雄</city>
</citys>
</province>
<province>
<name>新疆</name>
<citys>
<city>乌鲁木齐</city>
</citys>
</province>
</country>
2、使用JSON表示中国部分省市数据
var country =
{
name: "中国",
provinces: [
{ name: "黑龙江", citys: { city: ["哈尔滨", "大庆"]} },
{ name: "广东", citys: { city: ["广州", "深圳", "珠海"]} },
{ name: "台湾", citys: { city: ["台北", "高雄"]} },
{ name: "新疆", citys: { city: ["乌鲁木齐"]} }
]
}
三、JSON相比XML的不同之处:
在JSON之前,我们通常在网络传输中使用的格式是XML,
- XML的特点:较好的可读性,格式统一,解析简单
- JSON相比XML的特点:更小、更快,更易解析
(1)JavaScript原生支持JSON,解析速度会比XML更快
(2)XML解析DOM对象的时候,浏览器之间会产生差异
(3)JSON有很多强大的库能帮助我们更快更简单的完成工作
(4)没有结束标签,更短,读写速度快,能够使用JavaScript内建eval()函数进行解析,使用数组,不使用保留字
*作用:<>XML:读取XML文档;使用XML DOM来循环遍历文档;读取值并存储在变量中
<>JSON:读取JSON字符串;用eval()处理JSON字符串
四、JSON的具体学习
1、JSON语法
客户端与服务器交换的数据无非就是两种:数组或者对象,JSON也无非就是这两种,JSON语法是JavaScript语法的子集,在JavaScript中用[]来表示数组,,用{}来表示对象,例如:
//JSON数组(元素为对象的数组)
var employees = [
{ "firstName":"Bill" , "lastName":"Gates" },
{ "firstName":"George" , "lastName":"Bush" },
{ "firstName":"Thomas" , "lastName": "Carter" }
];
//JSON对象
var obj = {
age:20,
str:"wmyskxz",
method:function() {
alert("我爱学习");
}
};
2、解析JSON
首先来创建一个JSON对象
(1)使用HTML解析
在HTML中我们可以直接使用"."点号来直接访问JSON对象的属性
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>JSON学习</title>
</head>
<body>
<p>
Name:<span id="name"></span><br>
Age:<span id="age"></span><br>
</p>
<script>
var JASONObject = {"name": "我没有三颗心脏", "age": 21};
document.getElementById("name").innerHTML = JASONObject.name;
document.getElementById("age").innerHTML = JASONObject.age;
</script>
</body>
</html>
显示效果如下:
但是通常情况下,我们拿到和上传的并不是一个真正的jJSON对象,而是一串由JSON转化得到的字符串,比如可以这样表示:
<script>
var txt = '{"students":[' +
'{"name":"我没有三颗心脏0","age":21},' +
'{"name":"我没有三颗心脏1","age":21 }]}';
var obj = eval("(" + txt + ")");
document.getElementById("name").innerHTML = obj.students[1].name;
document.getElementById("age").innerHTML = obj.students[1].age;
</script>