for在python中循环迭代,在嵌套json中查找新值



这是我的第一篇文章,尝试使用python来设置mongodb的api后端(通过mongoengine(。

我有这部分代码:

def post(self) -> Response:
data = request.get_json()
post_list = Lists(**data).save()
output = {'id': str(post_list.id)}
return jsonify({'result': output})

在其中,我从前端收到一个json,存储到数据库中,一切都很好。这是原始json:

{
"listTitle":"hjhk",
"listId":"873",
"listCreator":"lotte",
"sublist":[
{
"subListCreator":"lotte",
"item":[
{
"itemTitle":"njkn",
"itemContext":"None",
},
{
"itemTitle":"njk",
"itemContext":"None"
},
{
"itemTitle":"vbvb",
"itemContext":"None"
}
]
}
]
}

然而,我试图在结构中的最低数组中添加一个id字段,以指示项在子列表中的位置(1、2、3等(。为此,我正在寻找一个合适的For循环。尝试了很多东西,这是我迄今为止走得最远的一次:

def post(self) -> Response:
data = request.get_json()
for sublist in data['sublist']:
for item in sublist['item']:
if 'positionId' not in item:
item['positionId'] = 1
item['positionId'] += 1
post_list = Lists(**data).save()
output = {'id': str(post_list.id)}
return jsonify({'result': output})

结果:

{
"listTitle":"dasdsa",
"listId":"873",
"listCreator":"lotte",
"sublist":[
{
"subListCreator":"lotte",
"item":[
{
"itemTitle":"dasd",
"itemContext":"None",
"positionId":1
},
{
"itemTitle":"dsad",
"itemContext":"None",
"positionId":1
},
{
"itemTitle":"dsadsa",
"itemContext":"None",
"positionId":2
}
]
}
]
}

我知道我做错了,我也经常在谷歌上搜索。发现了很多相关的东西,但对我来说没有任何意义。希望有人能帮助我:(

此外,我还想添加一个与positionId系统类似的自动记分字段。只有在这里,第一个值是3,下一个值是2,后面的所有值都需要有1的分数。

好吧,我希望答案很简单,非常感谢已经在考虑这个问题了!!

python中的enumerate((函数应该对您有用:

def post(self) -> Response:
data = request.get_json()
for sublist in data['sublist']:
for i,item in enumerate(sublist['item']):
item['positionId'] = i
post_list = Lists(**data).save()
output = {'id': str(post_list.id)}
return jsonify({'result': output})

最新更新