技术频道导航
HTML/CSS
.NET技术
IIS技术
PHP技术
Js/JQuery
Photoshop
Fireworks
服务器技术
操作系统
网站运营

赞助商

分类目录

赞助商

最新文章

搜索

【解决】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.

 Python将JSON写入文件

如果 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 文件(点击图片放大)

在 JSON 输出中看到,该PersonalInfo对象被跳过。

您可能对以下文章也感兴趣

标签: Python  
x
  • 站长推荐
/* 左侧显示文章内容目录 */