python json布尔值为小写字符串

时间:2011-09-07 14:42:48

标签: python django string json boolean

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

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

4 个答案:

答案 0 :(得分:6)

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

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

答案 1 :(得分:5)

执行此操作的方法是不使用模板。使用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(...)

答案 2 :(得分:2)

使用json module

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

答案 3 :(得分:1)

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

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