所有
我遇到了一个需求问题。我通常知道将python boolean更改为json格式时,然后将使用如下解决方案:
>>>data = {'key1': True}
>>>data_json = json.dumps(data)
>>>print data_json
{'key1': true}
我遇到的问题是我需要将它作为{'key1':'true'},带引号的字符串'或双引号“。任何人都知道有没有正确而简单的方法来做到这一点?谢谢
志红
答案 0 :(得分:1)
如果您的密钥没有嵌套,那么它只是str(value).lower()
的简单操作,否则您必须递归执行。
# this should work for basic data types
def convert_booleans(value):
if isinstance(value, dict):
return {key: convert_booleans(val) for key, val in value.items()}
elif isinstance(value, bool):
return str(value).lower()
elif hasattr(value, '__iter__'):
return map(convert_booleans, value)
return value
converted_data = convert_booleans(data)
print(json.dumps(converted_data))
话虽如此,但这并不是一件理想的事情。 JSON对象对布尔值具有特殊含义,不应将其视为字符串。如果可能的话,你最好尽量让客户说服你的api。最有可能的是,客户端将结果数据处理为字符串而不是json,因此很难解析数据。
答案 1 :(得分:0)
在致电json.dumps(data)
之前,请相应处理您的数据:
for key in data:
if type(data[key]) is bool:
data[key] = str(data[key]).lower()