python 布尔值到带引号的 json 字符串[重复]

问题描述 投票:0回答:2

全部,

我遇到了需求问题。我通常知道当将 python boolean 更改为 json 格式时,然后将使用如下解决方案:

>>>data = {'key1': True}
>>>data_json = json.dumps(data)
>>>print data_json
{'key1': true}

我遇到的问题是我需要将其设置为 {'key1': 'true'},带引号 ' 或双引号 " 的字符串。有人知道有没有正确且简单的方法来做到这一点?谢谢

志宏

python json quote
2个回答
1
投票

在致电

json.dumps(data)
之前,请相应地处理您的数据:

for key in data:
    if type(data[key]) is bool:
        data[key] = str(data[key]).lower()

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,因此很难解析数据。

© www.soinside.com 2019 - 2024. All rights reserved.