python - JSON 使用嵌套的自定义对象序列化字典
问题描述
还有其他问题询问如何序列化自定义类的对象。但答案只针对单独倾倒对象。相反,我想转储一个将自定义类对象作为值的字典。我想使用json.dump
方法
example_dict_format = {
"name_A": [message0, message1, ...],
"name_B": [message0, ...], ...
}
class Message:
def __init__(self, time, message):
self.time = time
self.message = message
def toJSON(self):
return json.dump(self.__dict__)
def __repr__(self):
return self.toJson()
自定义类并不复杂,它很简单,可以仅表示为字典。我尝试在类中添加__repr__
和toJSON
方法,但没有奏效。我收到以下错误
raise TypeError(f'Object of type {o.__class__.__name__} '
TypeError: Object of type Message is not JSON serializable
问题:你如何转储这样的字典?
解决方案
user2099394 的答案是正确的,但是如果您想将代码保留为您尝试编码的类的一部分,那么您可以通过蛮力来做到这一点:
class Message:
def __init__(self, time, message):
self.time = time
self.message = message
def toJson(self):
d = {}
d["time"] = str(self.time)
d["message"] = self.message
return json.dumps(d)
推荐阅读
- node.js - 我错过了什么,我的节点应用程序在更改时没有更新 .env 值?
- kendo-grid - 更改我的 KendoGrid 过滤器中的数据值
- vim - Vim won't load plugin?
- javascript - 如何在不循环数组字符的情况下找到字符串中字符数组的索引
- python - 我需要想办法让我的程序告诉用户他们赢或输,这取决于乌龟是否在圈子里
- r - R常见图例范围颜色中的Plot_ly等高线图未正确显示
- python - 比较两个嵌套字典以写入列表理解方法
- html - 文本不适合框顶部
- swift - 如何使用 SwiftUI 2.0 架构设置 Firebase Google SignIn 6.0.2?
- c++ - 何时何地使用 switch 语句而不是嵌套的 if-else 语句?