JSON&XML&CSV
- 数据交换格式
- 文本数据交换格式(容易测试和编辑but尺寸大,读取慢):CSV、JSON、XML
- 二进制数据交换格式:swf
CSV
- 用分隔符分离的纯文本文件
JSON
-
JavaScript object notation (JSON)JavaScript对象表示法
-
JSON是轻量级的文本数据交换格式,用于数据交互
-
独立于语言
- 被设计用于可读的数据交换
-
JSON比XML更小,更易解析
- 只支持字符串、数值、布尔值、null及在此基础上的对象和数组
-
主要用于服务器和web应用程序之间传输数据
使用
- 在后台应用程序中将相应数据封装成JSON格式,传到前台页面之后,需要将JSON格式转换为JavaScript对象,然后在网页中使用该数据。
- 在服务器上读取JSON格式(作为HttpRequest或者文件),将JSON数据转换为JavaScript对象,然后在网页中使用该数据。
- JavaScript函数eval()用于将 JSON 文本转换为 JavaScript 对象。
两种结构
-
无序对象结构
-
对象结构是使用大括号“{}”括起来的,大括号内是用英文逗号分隔的“关键字:值”对。注意:key必须用双引号
-
var JSONObj = { "键名1":值1, "键名2":值2, …… "键名n":值n }
-
-
有序数组结构
-
JSON数组结构是用中括号“[]”括起来,中括号内部以英文逗号“,”分隔的值列表组成。
-
var arr = [ { "键名1":值1, "键名2":值2 }, { "键名3":值3, "键名4":值4 }, …… ]
-
python3中的JSON模块
-
内置模块
- 序列化和反序列化
-
常用方法
-
JSON.dump 将Python对象序列化为JSON格式的数据流并写入文件类型的对象中
-
JSON.dumps 将Python对象序列化为JSON格式的字符串
-
JSON.load 从文件类型的对象中读取JSON格式的数据并反序列化成Python对象
-
JSON.loads 将包含JSON格式数据的字符串反序列化成Python对象
-
pprint库
- pretty print
- 结构化打印json数据
import pprint
json_data = json.loads(res.text)
pprint.pprint(json_data)
-
两个方法:
-
pprint()
-
pprint() 函数默认会对字典进行升序排序
-
每行的长度默认是 80 个字符。如果一个数据结构在一行上放不下,pprint() 会将其打断。
width 参数可以修改每行的长度。
-
-
pformat()
- 不直接打印,而是返回一个字符串
-
XML
- xml:extensible markup language,可扩展标记语言
- 与json一样,也是一种用于交互的数据格式,一般也叫xml文档
语法
一个常见的XML文档一般由一下部分组成:
-
文档声明(在文档的最前面)
-
<?xml version="1.0" encoding="utf-8"?>
-
-
元素
- 一个元素包含开始和结束标签
- 元素可嵌套
- 注意:xml中所有空格和换行都会被当做具体内容处理
-
属性
- 一个元素可以拥有多个属性
- 属性信息也可以用子元素表示
python中的SAX、DOM、ElementTree
-
DOM模块:一次性将整个XML文档加载进内存,适合解析小文件
-
SAX模块:从根元素开始,按顺序一个元素一个元素向下见解析,适合大文件
-
elementtree模块:检具上述两种模块的优点,可以读写xml文档
-
实际工作中需要查找特殊元素,需要用xml.etree.ElementTree.Element的find方法,还要结合XPath匹配查找
- find()
- findall()
- findtext()
XML vs JSON
-
json和xml都是自描述的结构化文档,可以自带描述信息
-
同一份数据,既可以用JSON也可以用XML
-
JSON的体积比较小,所以服务器返回给移动端数据格式以JSON居多