我想将 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)
最佳答案
您可以使用:
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'}]}]}
关于python - 在 Python 中形成 Json 模型的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57543511/