【二】Ajax与异步编程之数据传输格式json/XML
json
- json是 JavaScript Object Notation(javascript对象表示法)的首字母缩写,这里说的json指的是类似于javascript对象的一种数据格式。
- json的作用:
- 在不同的系统平台,或不同编程语言之间传递数据。
- 与json类似的还有xml,yaml,ini,text,protobuf。
语法
- json数据对象类似于JavaScript中的对象
- 但是它的键对应的值里面是没有函数方法的
- 值可以是普通变量或null,不支持undefined
- 值还可以是数组或者json对象。
- json数据如果要保存目录文件下,则json文件的后缀为".json"。
// json数据的对象格式:
{
"name":"tom",
"age":18
}
// json数据的数组格式(这个格式只能用于网络传输,不会保存到json文件的):
["tom",18,"programmer"]
- 复杂的json格式数据可以包含json对象和数组的写法。
{
"name":"小明",
"age": 40,
"fav":["code","eat","swim","read"],
"son":{
"name":"小小明",
"age":10
}
}
// 数组结构也可以作为json传输数据。
- json数据可以保存在.json文件中,一般里面就只有一个json对象。
总结:
1. json文件的后缀是json
2. json文件一般保存一个单一的json数据对象
3. json数据的属性不能是方法或者undefined,属性值只能:数值(整数、浮点数、布尔值)、字符串、对象和数组
4. json数据只使用双引号、每一个属性成员之间使用逗号隔开,并且最后一个成员没有逗号。
{
"name":"小明",
"age":40,
"fav":["code","eat","swim","read"],
"son":{
"name":"小小明",
"age":10
}
}
js中提供的json数据转换方法
- javascript提供了一个JSON对象来操作json数据的数据转换.
方法 | 参数 | 返回值 | 描述 |
---|---|---|---|
stringify | json对象 | 字符串 | json对象转成字符串 |
parse | 字符串 | json对象 | 字符串格式的json数据转成json对象 |
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<script>
// js原生对象
var js_obj = {
name:"小明",
age:40,
fav:["code","eat","swim",'read',],
son:{
name:'小小明',
age:10,
}
};
// json对象转换成字符串格式的json数据
var json_str = JSON.stringify(js_obj);
console.log( "json_str=", json_str );
// 字符串格式的json数据转换成json对象
data_str = `{"name":"小明","age":40,"fav":["code","eat","swim","read"],"son":{"name":"小小明","age":10}}`
var json_obj = JSON.parse(data_str);
console.log( json_obj );
console.log( json_obj.name );
</script>
</head>
<body>
</body>
</html>
代码执行结果:
XML
-
eXtend Markup Language 可扩展标记语言
-
事实上,在不同语言和不同平台之间传输数据的时候,xml最早也是一种比较常见的传输数据格式。
// 文件名格式: 文件名.xml
<?xml version="1.0" encoding="UTF-8" ?>
<data>
<name>小明</name>
<age>33</age>
<fav>code</fav>
<fav>eat</fav>
<fav>swim</fav>
<fav>read</fav>
<son>
<name>小小明</name>
<age>10</age>
</son>
</data>
- 实际上开发中,json的使用频率远远高于xml。因为json表达更加简洁。
{
"name": "小明",
"age": 33,
"fav": ["code", "eat", "swim", "read"],
"son": {"name": "小小明", "age": 10}
}
- 扩展:python3提供了 lxml 模块可以帮我们获取xml文档中的数据