JSON появляется как юникодные объекты в шаблоне Jinja2

Я использую Jinja2 с webapp2.

Jinja2 кодирует все «контекстные» данные в unicode, как говорит их документ. Это оказывается проблематичным, когда я пытаюсь вставить строку json в шаблон:

jsonData = json.loads(get_the_file('catsJson.txt')) 

Я передаю jsonData для шаблона, и я могу выполнить его цикл успешно, но когда я вставляю json-элемент в HTML, он выглядит так:

 <option value='[u'dogs', u'cats']'> 

Я хочу, чтобы он выглядел так (как в исходной строке json):

 <option value='["dogs", "cats"]'> 

Какие-либо предложения?

2 Solutions collect form web for “JSON появляется как юникодные объекты в шаблоне Jinja2”

Вы должны отфильтровать значение через safe фильтр, чтобы сообщить jinja2, что он не должен применять какие-либо другие фильтры к выходу. В синтаксисе jinja2 это будет:

 {{ jsonData | safe }} 

Обратите внимание: поскольку вы вызываете json.loads вас больше нет данных json, у вас есть объект списка python. Таким образом, когда он сериализуется, он совпадает с вызовом unicode(['dogs', 'cats']) который даст вам ваш u префикс. Возможно, вам не захочется разбирать данные json, или вам нужно будет перевести список в строку вручную, вместо того, чтобы сделать jinja2 для вас.

В Jinja 2.9 я последовал совету @ Xion, чтобы сначала преобразовать итерируемые элементы в строку, используя map('string') . Результат фильтра карты затем преобразуется в список, который, наконец, выводится как JSON с использованием встроенного фильтра tojson .

 {{ jsonData|map('string')|list|tojson }} 
  • DataFrame для вложенного JSON
  • Преобразование типа numpy в python
  • Сериализация члена Enum для JSON
  • Способ сохранения диаграммы networkx в json-графе?
  • Django: Уведомления JSON с использованием Redis PubSub, Node.js и Socket.io
  • самый быстрый способ создания JSON для отражения древовидной структуры в Python / Django с использованием mptt
  • Получить данные JSON in Flask
  • Проверьте, существует ли JSON (свойство объекта) и печатается в виде декодирования в формате Unicode
  •  
    Interesting Posts for Van-Lav

    Что возвращает Python socket.recv () для неблокирующих сокетов, если данные не получены до истечения тайм-аута?

    Отображение температуры из DHT11 в графическом интерфейсе – Автоматическое обновление?

    Где я могу найти документацию vtk для python?

    Как создать массив numpy списков?

    Обновление GUI TKinter из расчета многопроцессорности

    Генерировать «n» уникальные случайные числа в пределах диапазона

    import _socket: "Ошибка импорта: ошибка загрузки DLL"

    Можете ли вы помочь мне в этом упражнении на питоне?

    Использование Python для управления графическими интерфейсами других программ?

    Tensorflow Inception_Resnet_V2 Классифицировать изображение

    Как запустить скрипт Python на моем веб-сервере?

    Импортировать скрипт Python в другой?

    В чем разница между `sorted (list)` vs `list.sort ()`? питон

    Как агностически связать любой объект / модель с другой моделью Django?

    Создайте рамку данных pandas и получите несегментные столбцы в виде серии

    Python - лучший язык программирования в мире.