python json布尔到小写字符串

Posted

技术标签:

【中文标题】python json布尔到小写字符串【英文标题】:python json boolean to lowercase string 【发布时间】:2011-11-12 05:52:16 【问题描述】:

是否有在 Python 中输出布尔值的最佳实践?我正在生成一些 JSON(通过 Django 模板),默认情况下,所有布尔值都以大写的前导字符输出,这与 JSON 标准相反(即“True”而不是“true”)。

目前,我使用 str.lower() 格式化每个布尔字符串,但有没有更好的方法?

【问题讨论】:

【参考方案1】:

好吧,然后使用 json 序列化为 JSON,而不是一些自定义的东西。

import json
print json.dumps('foo': True) # => "foo": true

【讨论】:

【参考方案2】:

这样做的方法是不使用模板。使用json 模块,如下:

import json

def my_view(request):
    # ...
    json_d = dict(...)
    return json.dumps(json_d)

我首选的方法是编写一个装饰器,然后返回一个字典。

def json_view(f):
    def wrapped_f(*args, **kwargs):
        return json.dumps(f(*args, **kwargs))

    wrapped_f.original = f # for unit testing
    return wrapped_f

@json_view
my_view(request):
    # ...
    return dict(...)

【讨论】:

谢谢!现在我正在使用 variable_name|lower,但是当我碰到那堵墙时(其中包含引号的字符串等),我将重构以使用 json 模块。【参考方案3】:

使用json module:

>>> import json
>>> json.dump(dict(value=True), sys.stdout)
"value": true

【讨论】:

【参考方案4】:

更好的方法是避免手动或通过 Django 模板生成 JSON,而是使用适当的 JSON 库。在 Python 2.6+ 中,这就像 import json 一样简单。在较旧的 Python 中,您需要 pip install simplejsonimport simplejson as json

您自己生成正确的 JSON 可能很困难 - 您手动序列化 bool 值的经验只是一个开始。再举一个例子,用嵌套引号正确转义字符串怎么样?

【讨论】:

Django 附带了simplejson 模块的一个版本,如果json 模块可用,那么它就会被透明地使用。只需将其导入即可获得最佳可用选项:from django.utils import simplejsonfrom django.utils import simplejson as json

以上是关于python json布尔到小写字符串的主要内容,如果未能解决你的问题,请参考以下文章

python的数据类型和变量

布尔值

python数据类型

熊猫 |将带有类似列表/数组的字段的 json 文件读取到布尔列

yaml语法简单了解

python字符串常用方法