python - 在 json.dumps() 中将 bool 值转换为字符串

标签 python json boolean

我正在尝试将 python dict 转换为 json,但是我正在访问的 API 不采用 bool 值,而是使用“true”/“false”字符串。

例子:

dct = { "is_open": True }
json.dumps(dct)

当前给出 boolean 输出:{ "is_open": true }

但我想要的是小写字符串输出: { "is_open": "true"}

我尝试了 json.dumps(dct, cls=MyEncoder) 但它不起作用,只有非本地对象默认传递给 MyEncoder。

class MyEncoder(json.JSONEncoder):
        def default(self, o):
            if isinstance(o, bool):
                return str(o).lower()
            return super(MyEncoder, self).default(o)

任何帮助都会很棒。

(顺便说一句,这不是我正在访问的 API,因此我无法修改 API 以访问 true false 值而不是字符串替代值。)

最佳答案

如果是我,我会将 Python 数据结构转换为所需的格式,然后调用 json.dumps():

import json
import sys

def convert(obj):
    if isinstance(obj, bool):
        return str(obj).lower()
    if isinstance(obj, (list, tuple)):
        return [convert(item) for item in obj]
    if isinstance(obj, dict):
        return {convert(key):convert(value) for key, value in obj.items()}
    return obj

dct = {
  "is_open": True
}
print (json.dumps(dct))
print (json.dumps(convert(dct)))

输出:

{"is_open": true}
{"is_open": "true"}

关于python - 在 json.dumps() 中将 bool 值转换为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42658285/

相关文章:

Python 从带有 boto3 错误的代码调用我的 AWS lambda

JSON 对象的 Java 表示

javascript - PHP json_encode 到 JS 对象数组

Python:就地 "not' ing" boolean 值

java - 全局 boolean 值不能被另一个类访问

java - if 语句产生乱码输出

python - 如何在程序中添加转换屏幕?

python - 如何手动清理主目录中的 conda?

python - “ float ”对象没有属性 'astype'

python - 可以用 python 为 Google App Engine 编写的最简单的 URL 缩短器应用程序是什么?