python序列化-dumps的妙用

一、关于dumps的妙用

假设有一个数据a,形如

python 复制代码
a = {
	"name": "xiaoming",
	"age": 18,
	"info": ObjectA
}
其中,ObjectA是一个对象,形如
ObjectA:{
	"addr": "北京",
	"company": ObjectB
}
其中,ObjectB又是一个对象。。。。。。
如果一直有对象嵌套对象,此时我们该如何序列化呢?python中是不能序列化对象的。

使用json.dumps(a, default=lambda o: o.dict)即可解决。其中,default参数是:当 default 被指定时,其应该是一个函数,每当某个对象无法被序列化时它会被调用。它应该返回该对象的一个可以被 JSON 编码的版本或者引发一个 TypeError。如果没有被指定,则会直接引发 TypeError。

注:dumps函数的参数default设计思想很巧妙,他把dumps序列化数据时的代码解释权交给了函数调用方,由调用方决定如何解释不能被序列化的数据。这种思想很常见,比如filter,sorted函数。sorted的key参数,由key参数决定如何排序。

相关推荐
绝顶少年1 分钟前
[特殊字符] curl_cffi vs requests:Python请求库的终极对决
开发语言·python
WL_Aurora2 分钟前
备战蓝桥杯国赛【Day 18】
python·算法·蓝桥杯
Gerardisite3 分钟前
企业微信消息回调接口
python·机器人·企业微信
RSTJ_16259 分钟前
PYTHON+AI LLM DAY FIFITY-ONE
开发语言·人工智能·python
qingfeng1541511 分钟前
企业微信定时群发实战:API 如何实现批量消息自动发送?
java·开发语言·python·自动化·企业微信
qingfeng1541514 分钟前
企业微信 API 可以做什么?
java·开发语言·python·自动化·企业微信
Hesionberger15 分钟前
LeetCode105:前序中序构建二叉树(三解法)
java·数据结构·python·算法·leetcode·深度优先
Chase_______17 分钟前
【Java杂项】为什么 long 可以自动转 float?宽化基本类型转换与精度丢失详解
java·开发语言·python
invicinble18 分钟前
java数组相关的信息量
java·开发语言·python
小江的记录本18 分钟前
【Java基础】Java 8-21新特性 :JDK17:密封类、模式匹配、Record类(附《思维导图》+《面试高频考点清单》)
java·数据结构·后端·python·mysql·面试·职场和发展