Python JSON Boolean в строчную строку - PullRequest
       12

Python JSON Boolean в строчную строку

4 голосов
/ 07 сентября 2011

Есть ли лучшая практика для вывода логических значений в Python?Я генерирую некоторые JSON (с помощью шаблонов Django), и по умолчанию все логические значения выводятся с начальным символом в верхнем регистре, в отличие от стандарта JSON (т. Е. «True» в отличие от «true»).1002 * В настоящее время я форматирую каждую логическую строку, используя str.lower (), но есть ли лучший способ?

Ответы [ 4 ]

6 голосов
/ 07 сентября 2011

Ну, а затем сериализовать в JSON, используя json, а не какую-то пользовательскую штуку.

import json
print json.dumps({'foo': True}) # => {"foo": true}
5 голосов
/ 07 сентября 2011

Способ сделать это - не использовать шаблоны.Используйте модуль json следующим образом:

import json

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

Мой предпочтительный способ - написать декоратор и вернуть dict.

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 голосов
/ 07 сентября 2011

Используйте модуль json :

>>> import json
>>> json.dump(dict(value=True), sys.stdout)
{"value": true}
1 голос
/ 07 сентября 2011

Лучшим способом было бы избежать генерации JSON вручную или с помощью шаблонов Django, и вместо этого использовать правильную библиотеку JSON.В Python 2.6+ это так же просто, как import json.В старых Pythons вам понадобятся pip install simplejson и import simplejson as json.

. Может быть сложно создать правильный JSON самостоятельно - ваш опыт с сериализацией значений bool вручную - это только начало.Для другого примера, как насчет правильного экранирования строк с вложенными кавычками?

...