python 中的 for 循环迭代以获得嵌套 json 中的新值
for loop iteration in python for new value inside a nested json
这是我的第一个 post,尝试掌握 python 的窍门,将 api 后端设置为 mongodb(通过 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系统类似的自动scorefield。只有在这里第一个值是 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})
这是我的第一个 post,尝试掌握 python 的窍门,将 api 后端设置为 mongodb(通过 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系统类似的自动scorefield。只有在这里第一个值是 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})