认真生活每一天,认真敲好每一行代码,为了未来的小公主,好好学习,天天向上~
一、先讲讲json的出现,就要先讲讲序列化
1. 序列化(Serialization):将对象的状态信息转换为可以存储或可以通过网络传输的过程,传输的格式可以是JSON、XML等。反序列化就是从存储区域(JSON,XML)读取反序列化对象的状态,重新创建该对象。
2. 为什么要用json传输数据,这里就要比较两种传输数据的方式:xml和json。它们之间有什么区别呢?
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。
XML 全称是可扩展标记语言(EXtensible
Markup Language),是一种类似与HTML的语言,是被设计用来描述数据的语言,重量级。
JSON和XML的轻/重量级的区别在于:JSON只提供了整体解析方案,而这种方法只在解析较少的数据时才能起到良好效果;而XML提供了对大规模数据的逐步解析方案,这种方案很适用于对大量数据的处理。
Python2.6开始加入了JSON模块,无需另外下载,Python的Json模块序列化与反序列化的过程分别是 encoding和 decoding。
encoding:把一个Python对象编码转换成Json字符串。
decoding:把Json格式字符串解码转换成Python对象
从python转为json的官方数据格式为:
Python | JSON |
---|---|
dict | object |
list, tuple | array |
str, unicode | string |
int, long, float | number |
True | true |
False | false |
None | null |
JSON | Python |
---|---|
object | dict |
array | list |
string | unicode |
number (int) | int, long |
number (real) | float |
true | True |
false | False |
null | None |
二、基于Python的第三方库
实际上JSON就是Python字典的字符串表示,但是字典作为一个复杂对象是无法直接转换成定义它的代码的字符串,Python有一个叫simplejson的库可以方便的完成JSON的生成和解析,这个包已经包含在Python2.6中,就叫json 主要包含四个方法: dump和dumps(从Python生成JSON),load和loads(解析JSON成Python的数据类型)dump和dumps的唯一区别是dump会生成一个类文件对象,dumps会生成字符串,同理load和loads分别解析类文件对象和字符串格式的JSON。
1. Python2.6自带json库
(1) dumps(dump)方法:对简单数据类型encoding;
(2)loads(load)方法:处理简单数据类型的decoding(解码)转换
json库的方法:
json_str1 = '{"name":"test", "type":"haha"}'
json_struct1 = json.loads(json_str1) #个人觉得load()=JSONDecoder().decode()
json_decode_struct = json.JSONDecoder().decode(json_str1)
json_struct2 = {'name':'test', 'type':'haha'}
json_str2 = json.dumps(json_struct2)
json_encode_str = json.JSONEncoder().encode(json_struct2)
2. simple库
simplejson库就是Python2.6自带的json库