jinja2 шаблон json опущенпара - PullRequest
0 голосов
/ 07 февраля 2019

Я использую шаблоны jinja2 для рендеринга данных в json

У меня есть данные Python как

name = ['Mark', 'Smits', 'Roger']
age = [23, 45, 32]
gender = ['male','male']

Я хочу записать их в файлы json, используя следующий шаблон

{
  "resourceType" : "MyData",
  "name" : "{{human_name}}",
  "age" : "{{age}}",
  "gender":"{{gender}}"
}

что я хочу для записей [Roger, 32, (null)]

мой выходной файл json должен выглядеть следующим образом:

{
  "resourceType" : "MyData",
  "name" : "Roger",
  "age" : "32",
}

В настоящее время он выглядит как

{
  "resourceType" : "MyData",
  "name" : "Roger",
  "age" : "32",
  "gender":"",
}

Я пытался использовать фильтры в дзиндзя, но на самом деле не работал.

1 Ответ

0 голосов
/ 07 февраля 2019

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

name = ['Mark', 'Smits', 'Roger']
age = [23, 45, 32]
gender = ['male','male']

item_count_max = max(len(name), len(age), len(gender))

name = name + [None, ] * (item_count_max - len(name))
age = age + [None, ] * (item_count_max - len(age))
gender = gender + [None, ] * (item_count_max - len(gender))

import json
for n, a, g in zip(name, age, gender):
    data = {
        'resourceType': 'MyData',
        'name': n,
        'age': a,
        'gender': g
    }
    items = data.items()
    for k, v in items:  # We remove empty keys here
        if not v:
            data.pop(k)
    print(json.dumps(data, indent=4))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...