python - Python中嵌套NamedTuples的JSON反序列化
问题描述
嵌套 NamedTuples 的 JSON 序列化很简单:
import json
from typing import NamedTuple
class A(NamedTuple):
a: int
class B(NamedTuple):
a: A
b: str
s = json.dumps(B(A(42), "auie"))
print(s) # outputs the following string: "[[42], 'auie']"
另一方面,JSON 反序列化需要一些工作……最好的方法是什么?我想使用递归函数,但我希望会有一个更简洁的实现......</p>
def deserialize(T,l):
for i, k in enumerate(T._field_types):
if hasattr(T._field_types[k], "_field_types"): # I'm open to a more robust check
l[i] = deserialize(T._field_types[k], l[i])
return T(*l)
print(deserialize(B, json.loads(s))) # prints B(a=A(a=42), b='auie')
解决方案
推荐阅读
- c++ - 何时将其用于 lambda 中的类函数
- pyspark - PySpark:计算平面图中的每个元素
- python - 如何在 Python 中为 Discord 机器人命令添加冷却时间?
- python - Pandas:在 pivot_table 中,如何自定义填充缺失值?
- cloudsim - CloudSim Plus中虚拟机的功耗(模拟工具)
- actions-on-google - 确保返回用户给予许可
- r - 如何导入带有日期时间标题信息的excel数据
- html - 为什么我的 div 背景在标题周围分开?
- ruby-on-rails - 邀请注册密钥(无设备)
- javascript - GeoJson 正确渲染但没有请求的颜色