首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将python布尔值转换为带引号的json字符串

将python布尔值转换为带引号的json字符串
EN

Stack Overflow用户
提问于 2017-09-25 18:14:09
回答 2查看 3.2K关注 0票数 1

全,

我遇到了一个关于需求的问题。我通常知道何时将python boolean更改为json格式,然后使用以下解决方案:

代码语言:javascript
运行
复制
>>>data = {'key1': True}
>>>data_json = json.dumps(data)
>>>print data_json
{'key1': true}

我的问题是我需要有{'key1':'true'},带有引号的字符串或双引号“。谁知道有什么正确而简单的方法来做到这一点吗?谢谢。

志宏

EN

回答 2

Stack Overflow用户

发布于 2017-09-25 18:26:49

如果你的键不是嵌套的,那么它只是一个简单的str(value).lower()操作,否则你就必须递归地执行它。

代码语言:javascript
运行
复制
# 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
EN

Stack Overflow用户

发布于 2017-09-25 18:19:14

在调用json.dumps(data)之前,请对数据进行相应的处理:

代码语言:javascript
运行
复制
for key in data:
    if type(data[key]) is bool:
        data[key] = str(data[key]).lower()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46402728

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档