python - python json.dumps:无法忽略不可序列化的对象
问题描述
在python中,当我想在调试期间漂亮地打印一个对象时,我使用
print(json.dumps(obj.__dict__), indent=4, sort_keys=True)
因为只是使用print(obj)
不是很可读
然后,如果某些项目是不可序列化的,它会说
Object of type SOMETHING is not JSON serializable
所以我的目标是在调试时检查一个对象,而不是让一个完美的序列化对象传递它,然后再转换回来。
我通过添加来尝试以下default=str
操作以避免错误,它在许多情况下都有效
print(json.dumps(obj.__dict__), indent=4, sort_keys=True, default=str)
但在某些情况下它仍然显示
Object of type SOMETHING is not JSON serializable
那么如何解决这个问题。
我正在尝试的对象来自 Django 项目。我正在尝试使用json.dumps
from django.db import connections
import json
for c in connections.all():
c_dict = {k: getattr(c, k) for k in dir(c)} # this gives all the properties listed using dir(c)
print(json.dumps(c_dict), indent=4, sort_keys=True, default=str)
回答:
@milanbalanz 在评论中回答了它。它是typo error
括号中的一个。所以default=str
它的工作原理是缩进错误的
print(json.dumps(c_dict), indent=4, sort_keys=True, default=str)
正确的是
print(json.dumps(c_dict, indent=4, sort_keys=True, default=str))
解决方案
试试下面的代码,希望这会有所帮助。
from json import JSONEncoder
class Encoder(JSONEncoder):
def default(self, o):
return o.__dict__
Encoder().encode(f)
推荐阅读
- css - 使用 Rmarkdown 制作的海报 CSS 文件:需要字体
- amazon-web-services - 无法访问 AWS Elastic beanstalk EC2 实例
- css - 禁用单个表的 css 样式
- c# - 尝试访问自动完成流时出现 COMException (0x80040102)
- python - 尝试本地运行时出现 SqlAlchemy 问题
- sql - 查询计算每日预算
- java - exoplayer 2.11.* 版本在 android 5.0/5.1(Lollipop) 设备中引发渲染器错误
- javascript - 使用 React 显示隐藏元素
- python - FastAPI:从视图名称(路由名称)中检索 URL
- pandas - 如何在熊猫中的日期时间变量之前删除行?