目录
TypeError: Object of type function is not JSON serializable
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_employee
给json.dumps
方法,这不是我们想要的。
该类JSONEncoder
默认支持以下对象和类型。
Python | JSON |
---|---|
字典 | 目的 |
列表,元组 | 大批 |
海峡 | 细绳 |
int、float、int 和 float 派生枚举 | 数字 |
真的 | 真的 |
错误的 | 错误的 |
没有任何 | 无效的 |
默认情况下,该类JSONEncoder
不支持function
JSON 转换。
如果您遇到以下任何错误,请单击链接打开文章:
- TypeError:字节类型的对象不是 JSON 可序列化的
- TypeError:类型集的对象不是 JSON 可序列化的
- TypeError:Decimal 类型的对象不是 JSON 可序列化的
- 类型错误:日期时间类型的对象不是 JSON 可序列化的
- 类型错误:ndarray 类型的对象不是 JSON 可序列化的
- TypeError:int64 类型的对象不是 JSON 可序列化的
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_salary
json.dumps
该类JSONEncoder
默认支持以下对象和类型。
Python | JSON |
---|---|
字典 | 目的 |
列表,元组 | 大批 |
海峡 | 细绳 |
int、float、int 和 float 派生枚举 | 数字 |
真的 | 真的 |
错误的 | 错误的 |
没有任何 | 无效的 |
默认情况下,该类JSONEncoder
不支持method
JSON 转换。
我还写了一篇关于
如何检查变量是否为函数的文章。
额外资源
您可以通过查看以下教程来了解有关相关主题的更多信息: