TypeError:函数类型的对象不是 JSON 可序列化的

目录

TypeError: Object of type function is not JSON serializable

  1. TypeError:函数类型的对象不是 JSON 可序列化的
  2. TypeError:类型方法的对象不是 JSON 可序列化的

TypeError: 函数类型的对象不是 JSON 可序列化的

当我们尝试将函数序列化为 JSON 时,会出现 Python“TypeError: Object of type function is not JSON serializable”。

要解决该错误,请确保调用该函数并序列化该函数返回的对象。

下面是错误如何发生的示例。

主程序
import json def get_employee(): return {'name': 'Bobby Hadz', 'age': 30} # ⛔️ TypeError: Object of type function is not JSON serializable json_str = json.dumps(get_employee) # 👈️ forgot to call function

get_employee()我们忘记在调用方法时
调用函数
json.dumps()

调用函数并将其输出序列化以解决错误

要解决错误,请确保调用函数并序列化其返回值而不是函数本身。

主程序
import json def get_employee(): return {'name': 'Bobby Hadz', 'age': 30} # ✅ call function get_employee() and NOT get_employee json_str = json.dumps(get_employee()) print(json_str) # 👉️ '{"name": "Bobby Hadz", "age": 30}' print(type(json_str)) # 👉️ <class 'str'>

json.dumps方法将 Python 对象转换为 JSON 格式字符串。

我们调用了函数,所以我们序列化了dict对象而不是尝试序列化函数本身。

您必须添加括号才能调用函数,例如get_employee(),否则我们会将函数的引用传递get_employeejson.dumps方法,这不是我们想要的。

该类JSONEncoder默认支持以下对象和类型。

Python JSON
字典 目的
列表,元组 大批
海峡 细绳
int、float、int 和 float 派生枚举 数字
真的 真的
错误的 错误的
没有任何 无效的

默认情况下,该类JSONEncoder不支持functionJSON 转换。

想了解更多有关在 Python 中调用函数的信息吗? 查看这些资源: 如何在 Python 中调用一个函数 N 次在 Python 中从另一个类调用一个类方法

如果您遇到以下任何错误,请单击链接打开文章:

TypeError: 类型方法的对象不是 JSON 可序列化的

当我们尝试将方法序列化为 JSON 时,会出现 Python“TypeError: Object of type method is not JSON serializable”。

要解决该错误,请确保调用该方法并序列化该方法返回的对象。

下面是错误如何发生的示例。

主程序
import json class Employee(): def get_salary(self): return 100 emp = Employee() # ⛔️ TypeError: Object of type method is not JSON serializable json_str = json.dumps({'salary': emp.get_salary}) # 👈️ forgot to call method

emp.get_salary()我们在调用方法的时候
忘记调用方法了
json.dumps()

调用该方法并将其返回值序列化以解决错误

要解决错误,请确保
调用方法并序列化其返回值而不是方法本身。

主程序
import json class Employee(): def get_salary(self): return 100 emp = Employee() # ✅ call method emp.get_salary() and NOT emp.get_salary json_str = json.dumps({'salary': emp.get_salary()}) print(json_str) # 👉️ '{"salary": 100}' print(type(json_str)) # 👉️ <class 'str'>

json.dumps方法将 Python 对象转换为 JSON 格式字符串。

我们调用了方法,所以我们序列化了
int,而不是尝试序列化方法本身。

您必须添加括号才能调用方法,例如,否则我们会将对该方法的emp.get_salary()引用传递给该方法,这不是我们想要的。emp.get_salaryjson.dumps

该类JSONEncoder默认支持以下对象和类型。

Python JSON
字典 目的
列表,元组 大批
海峡 细绳
int、float、int 和 float 派生枚举 数字
真的 真的
错误的 错误的
没有任何 无效的

默认情况下,该类JSONEncoder不支持methodJSON 转换。

我还写了一篇关于
如何检查变量是否为函数的文章。

额外资源

您可以通过查看以下教程来了解有关相关主题的更多信息: