类型错误:bool_ 类型的对象不是 JSON 可序列化的

Zai*_*eed 15 python json numpy python-3.x

我正在尝试使用布尔格式的值之一将字典写入 json 文件。当我尝试运行我的代码时出现以下错误。

raise TypeError(f'Object of type {o. class . name } ' TypeError: object of type bool_ is not JSON serializable

为此,我目前正在使用 Python。

Eri*_*ort 26

可能是因为这个问题(或类似的问题):

import numpy as np
import json

json.dumps({"X": np.int32(5) > 5})
Run Code Online (Sandbox Code Playgroud)

类型错误:“bool_”类型的对象不是 JSON 可序列化的

问题是你最终得到的是 typebool_而不是bool.

调用bool()错误类型的任何值都可以解决您的问题(假设您的版本bool_与 numpy 的行为类似:

json.dumps({"X": bool(np.int32(5) > 5)})
Run Code Online (Sandbox Code Playgroud)

'{"X": 假}'


Jus*_*tas 5

如果您有多个bool_键或嵌套结构,这将转换bool_包括深度嵌套在内的所有字段(如果有):

import json

class CustomJSONizer(json.JSONEncoder):
    def default(self, obj):
        return super().encode(bool(obj)) \
            if isinstance(obj, np.bool_) \
            else super().default(obj)
Run Code Online (Sandbox Code Playgroud)

然后转换对象/字典:

json.dumps(d, cls=CustomJSONizer)
Run Code Online (Sandbox Code Playgroud)