У меня есть эти данные, которые я отправляю в виде JSON в Flask RESTful API в качестве полезной нагрузки:
{"Order": [
{
"Menu_Id":1,
"Menu_Price":10,
"Order_ItemQty":2
},
{
"Menu_Id":2,
"Menu_Price":18,
"Order_ItemQty":3
}
],
"User_Id":user_id
}
Затем я хотел бы работать с ними в python как обычный список диктов.Я получаю его, используя reqparse, как показано ниже:
UserOrdersparser.add_argument('Order', action='append', required=True,
help='This field cant be left blank!')
UserOrdersparser.add_argument('User_Id', type=int, required=True, help='This
field cant be left blank!')
Затем пытаюсь получить доступ к значениям dict списка 'order':
json_payload = UserOrders.parser.parse_args()
json_payload['Order'][0]['Menu_Id']
Но я продолжаю получать следующее сообщение об ошибке:
> print(json_payload['Order'][0]['Menu_Id'])
E TypeError: string indices must be integers
Распечатка списка 'заказов' такая же, как и ниже, и я думаю, что 'ы' являются причиной, но я попытался расшифровать их, используя метод encode (), но безуспешно:
print(json_payload)['Orders']
# 'Order': [u"{u'Menu_Id': 1, u'Menu_Price': 10, u'Order_ItemQty': 2}", u"{u'Menu_Id': 2, u'Menu_Price': 18, u'Order_ItemQty': 3}"]
Примечание. Доступ ко второму элементу данных JSON 'User_Id'
не вызывает проблем.
Как получить список обратно или преобразовать его, получить правильный список Python, который выглядит следующим образом:
[
{'Menu_Id': 1, 'Menu_Price': 10, 'Order_ItemQty': 2},
{'Menu_Id': 2, 'Menu_Price': 18, 'Order_ItemQty': 3}
]