Python JSON序列化与反序列化

序列化是把内存里的变量,变成可存储或者可传输到其他模块、设备的过程。web应用最常见的序列化后的标准格式有JSON,XML等。PYTHON内置的json模块对序列化、反序列化提供了完备的功能。


常用接口函数

json.dump()   把对象序列化,写入类似文件的流

json.dumps() 注意函数名的区别,把对象序列化成json格式的字符串,这个函数比较常用

对应的反序列化的函数:

json.load()

json.loads()

举个例子:

>>> import json
>>> d = dict(name='Alice', age=20, score=90)
>>> json.dumps(d)
'{"age": 20, "name": "Alice", "score":90}'
在默认情况下,JSON和python类型之间的对应关系如下:

JSON
Python
object dict
array list
string unicode
number int, log
number(real) float
true/false True/False
null None
   

进阶 - 转换类对象

不能直接转换class对象,解决方案是提供一个自定义的转换函数,这个函数负责把类变量转换成dict格式,并作为dumps()的参数,这个在廖雪峰的教程里有详细的介绍,大家可以自行搜索。简单的举例示范如下:

>>> import json
>>> d = MyClass('Alice',20, 90)
>>> json.dumps(d,object_hook=myfunc)

重名对象的处理

json规定每个对象的名字必须是唯一的,如果JSON对象有重名时,json模块不产生异常,而是自动取最后一对。

>>> import json
>>> d ='{"x":1, "x":2, "x":3}'
>>> json.loads(d)
>>> {u'x':3}

中文编码问题

开发web应用时,由于页面使用中文,所以常常需要返回中文信息。可以默认情况下,序列化时使用unicode编码,解决这个问题的方案是添加dumps的参数: ensure_ascii=False。





你可能感兴趣的:(Python JSON序列化与反序列化)