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
objectdict
arraylist
stringunicode
numberint, log
number(real)float
true/falseTrue/False
nullNone
  

进阶 - 转换类对象

不能直接转换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。





  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值