Для меня кажется, что вы хотите вернуть имя объекта, где id == status_id
. Это правильно? Чем вам не нужно сбрасывать его в JSON. Вы можете проверить, существует ли status_id
в списке с помощью:
len(list(filter(lambda x: x['id'] == status_id, data))) == 1
Пояснение:
list(filter(lambda x: x['id'] == status_id, data))
Это фильтрует ваш список словарей, чтобы иметь только те словари, которые имеют соответствующий идентификатор.
len(...) == 1
Это проверяет, существует ли только один и точно один объект с таким идентификатором. Если вы хотите вернуть имя именно этого диктанта, вы можете написать его так:
matching_dict = list(filter(lambda x: x['id'] == status_id, data))
if len(matching_dict) == 1:
return matching_dict[0]['name']
И если вы хотите вернуть json (в виде строки). Затем вам нужно позвонить json.dumps()
как json.dumps(matching_dict[0])
в зависимости от того, что вы хотите сделать.
Редактировать : Таким образом, все вместе может выглядеть так:
@app.route("/status/<status_id>", methods=['GET'])
def get_status(status_id):
data = [{
"id": 5,
"name": "Meghan"
},
{
"id": 6,
"name": "Julia"
}
]
matching_dict = list(filter(lambda x: x['id'] == status_id, data))
if len(matching_dict) == 1:
return json.dumps(matching_dict[0])
else:
return "Found zero or more than one in Dictionary"
Запрос: GET /status/5
Ответ: {"id":5, "name": "Meghan"}