我正在尝试将 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/