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参数决定如何排序。

相关推荐
Learn-Python8 小时前
MongoDB-only方法
python·sql
小途软件8 小时前
用于机器人电池电量预测的Sarsa强化学习混合集成方法
java·人工智能·pytorch·python·深度学习·语言模型
扫地的小何尚9 小时前
NVIDIA RTX PC开源AI工具升级:加速LLM和扩散模型的性能革命
人工智能·python·算法·开源·nvidia·1024程序员节
wanglei2007089 小时前
生产者消费者
开发语言·python
清水白石00810 小时前
《从零到进阶:Pydantic v1 与 v2 的核心差异与零成本校验实现原理》
数据库·python
昵称已被吞噬~‘(*@﹏@*)’~10 小时前
【RL+空战】学习记录03:基于JSBSim构造简易空空导弹模型,并结合python接口调用测试
开发语言·人工智能·python·学习·深度强化学习·jsbsim·空战
2501_9418779810 小时前
从配置热更新到运行时自适应的互联网工程语法演进与多语言实践随笔分享
开发语言·前端·python
酩酊仙人10 小时前
fastmcp构建mcp server和client
python·ai·mcp
且去填词11 小时前
DeepSeek API 深度解析:从流式输出、Function Calling 到构建拥有“手脚”的 AI 应用
人工智能·python·语言模型·llm·agent·deepseek
rgeshfgreh11 小时前
Python条件与循环实战指南
python