Проблема с формированием модели Json в Python
Я хочу преобразовать JSON в модель работы, чтобы использовать ее в API. ниже ввод и ожидаемый вывод. Я также вставил код, который я использовал, но он не работает, как ожидалось. Из ключа задач нам нужно извлечь значения и составить их в виде отдельного списка моделей.
Ввод JSON
{
"id": "one",
"type": "db",
"tasks" : {
"process1" : ["j1", "j2"],
"process2" : ["j4"]
}
}
Ожидаемый результат:
{
"model": [
{
"data": [
{
"columnName": "tasks",
"columnValue": "j1"
},
{
"columnName": "process_name",
"columnValue": "process1"
}
]
},
{
"data": [
{
"columnName": "tasks",
"columnValue": "j2"
},
{
"columnName": "process_name",
"columnValue": "process1"
}
]
},
{
"data": [
{
"columnName": "tasks",
"columnValue": "j4"
},
{
"columnName": "process_name",
"columnValue": "process2"
}
]
}
]
}
Я пробовал с приведенным ниже кодом, но это не помогает мне.
wanted_keys = ['tasks'] # The keys you want
task = dict((k, data[k]) for k in wanted_keys if k in data)
#print(type(task.items()))
ne = {}
for key, value in task.items():
ne = dict(value)
#print(ne)
jobModel = []
tableData = []
for key, value in ne.items():
#print(key)
for i in value:
#print(i)
tableData.append({'columnName': 'job_name', 'columnValue': i})
tableData.append({'columnName': 'jobplan_name', 'columnValue': key})
jobModel.append(tableData)
#print(tableData)
print(jobModel)
1 ответ
Решение
Вы можете использовать:
from pprint import pprint
data = {
"id": "one",
"type": "db",
"tasks" : {
"process1" : ["j1", "j2"],
"process2" : ["j4"]
}
}
tasks_data = data['tasks']
new_data = []
for process, tasks in tasks_data.items():
for task in tasks:
new_data.append({'data': [
{'columnName': 'tasks', 'columnValue': task},
{'columnName': 'process_name', 'columnValue': process}]})
output = {'model': new_data}
pprint(output)
выход:
{'model': [{'data': [{'columnName': 'tasks', 'columnValue': 'j1'},
{'columnName': 'process_name',
'columnValue': 'process1'}]},
{'data': [{'columnName': 'tasks', 'columnValue': 'j2'},
{'columnName': 'process_name',
'columnValue': 'process1'}]},
{'data': [{'columnName': 'tasks', 'columnValue': 'j4'},
{'columnName': 'process_name',
'columnValue': 'process2'}]}]}