1、与 XML 相同之处
- JSON 是纯文本
- JSON 具有"自我描述性"
- JSON 具有层级结构(值中存在值)
- JSON 可通过 JavaScript 进行解析
- JSON 数据可使用 AJAX 进行传输
2、与 XML 不同之处
- 没有结束标签
- 更短
- 读写的速度更快
- 能够使用内建的 JavaScript eval() 方法进行解析
- 使用数组
- 不使用保留字
3、XML和JSON使用流程
对于 AJAX 应用程序来说,JSON 比 XML 更快更易使用:
使用 XML
- 读取 XML 文档
- 使用 XML DOM 来循环遍历文档
- 读取值并存储在变量中
使用 JSON
- 读取 JSON 字符串
- 用 eval() 处理 JSON 字符串
4、语法
数据在值对中,数据用逗号分隔,大括号存对象,中括号存数组。
eg:
{"name":"dantajun"}
{"name":"dantajun","age":4} JSON对象
{
"status":[
{"name":"dantajun","age":4},
{"name":"dantajun2","age":18},
{"name":"dantajun3","age":18}
]
} JSON数组
访问:s
status[0].name; 返回“dantajun”
status[0].age=1; 修改蛋挞菌年龄为1
5、XML和JSON实例
{
"status":[
{"name":"dantajun","age":4},
{"name":"dantajun2","age":18},
{"name":"dantajun3","age":18}
]
}
<status>
<statu>
<name>dantajun</name> <age>4</age>
</statu>
<statu>
<name>dantajun2</name> <age>18</age>
</statu>
<statu>
<name>dantajun3</name> <age>18</age>
</statu>
</status>
6、JSON和JavaScript的转换
JSON.parse(): 将一个 JSON 字符串转换为 JavaScript 对象。
JSON数组
var text='{"status":['+
'{"name":"dantajun","age":4},'+
'{"name":"dantajun2","age":18},'+
'{"name":"dantajun3","age":18} ]}';
var obj=JSON.parse(text);
//var obj = eval ("(" + txt + ")");
//avaScript 函数 eval() 可用于将 JSON 文本转换为 JavaScript 对象
document.getElementById("demo").innerHTML = obj.status[0].name + " " + obj.status[0].age;
JSON对象
var obj = JSON.parse('{ "name":"runoob", "alexa":10000, "site":"www.runoob.com" }');
document.getElementById("demo").innerHTML = obj.name + ":" + obj.site;
利用AJAX从服务器请求JSON,解析为Javascript
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
myObj = JSON.parse(this.responseText);
document.getElementById("demo").innerHTML = myObj.name;
}
};
xmlhttp.open("GET", "json数据所在文件URL", true);
xmlhttp.send();
JSON.stringify(): 于将 JavaScript 值转换为 JSON 字符串。
JavaScript对象
var obj = { "name":"runoob", "alexa":10000, "site":"www.runoob.com"};
var myJSON = JSON.stringify(obj);
JavaScript数组
var arr = [ "Google", "Runoob", "Taobao", "Facebook" ];
var myJSON = JSON.stringify(arr);
7、JSON对象
通过 . [] 可以对其进行操作。
使用 for-in 来循环对象的属性。
for (x in myObj) {
x;//读取x
myObj[x];//访问属性值
}