【解决】Python将JSON写入文件:Object of type Your Class is not JSON serializable
作者:admin 时间:2022-1-12 11:3:55 浏览:Python的内置 json 模块只能处理具有直接 JSON 等价物的Python 基元类型(例如,str、int、float、bool、None等)。
如果 Python 字典包含一个自定义 Python 对象作为键之一,并且如果我们尝试将其转换为 JSON 格式,你将得到一个 TypeError 即Object of type "Your Class" is not JSON serializable.
如果 JSON 数据中不需要此自定义对象,你可以使用json.dump()
方法的skipkeys=true
参数跳过它。
如果skipkeys=true
为 True,则将dict
跳过非基本类型(str、int、float、bool、None)的键,而不是引发 TypeError。
如果需要转成 JSON,那么可以参考文章如何使 Python 类 JSON 可序列化。
现在,让我们看看这个例子。
import json
class PersonalInfo:
def __init__(self, name, age):
self.name = name
self.age = age
def showInfo(self):
print("Developer name is " + self.name, "Age is ", self.age)
dev = PersonalInfo("John", 36)
developer_Dict = {
PersonalInfo: dev,
"salary": 9000,
"skills": ["Python", "Machine Learning", "Web Development"],
"email": "admin@webkaka.com"
}
print("Writing JSON data into file by skipping non-basic types")
with open("developer.json", "w") as write_file:
json.dump(developer_Dict, write_file, skipkeys=True)
print("Done")
输出:
Writing JSON data into file by skipping non-basic types
Done
文件内容:
在 JSON 输出中看到,该PersonalInfo对象被跳过。
您可能对以下文章也感兴趣
- json.dump()将Python字典对象转换为JSON格式写入文件
- json.dumps()将Python字典对象转换为JSON格式的字符串
- Python使用DjangoJSONEncoder或json_util把日期时间序列化为JSON
- Python编写自定义方法将日期时间转为JSON
- 两种方法Python将日期时间DateTime序列化为JSON
- Python如何直接访问JSON嵌套键
- 两种方案 Python 解决unicode、utf-8编码问题
- Python将Unicode或非ASCII数据序列化为JSON原样字符串
- 4种方法使Python类JSON可序列化
- 5种方法Python将JSON转换为自定义Python对象/类
标签: Python
相关文章
x
- 站长推荐