Как получить список значений одного ключа из JSON webhook с flask? - PullRequest
0 голосов
/ 14 июля 2020

У меня есть прослушиватель веб-перехватчика, который прослушивает указанный c веб-перехватчик и захватывает данные JSON.

Пример данных json.

  [
    {
      "InvoiceNumberPrefix": "AB-",
        "InvoiceNumber": 1111
       
        ],
        "OrderItemList": [
          {
            "CatalogID": 1,
            "ItemIndexID": 1,
            "ItemID": "444444",
          },
          {
            "CatalogID": 1,
            "ItemIndexID": 1,
            "ItemID": "666666",}   
    }
  ]

WebHook Listener

@app.route('/webhook', methods=['POST'])
def webhook():
    if request.method == 'POST':
        content = request.json
        ITEM= content[0]['OrderItemList'][0]['ItemID']
        ITEM2= content[0]['OrderItemList'][1]['ItemID']

Мне нужно получить значения для всех «ItemID». Я могу использовать content[0]['OrderItemList'][0]['ItemID'], чтобы получить значение ItemID, однако это непрактично, так как элементов могут быть сотни. Я пробовал l oop и итерацию безуспешно.

Ответы [ 2 ]

0 голосов
/ 14 июля 2020

Прикрепленный json неверен. Я исправил и считаю, что это правильно

a = [
    {
        "InvoiceNumberPrefix": "AB-",
        "InvoiceNumber": 1111,
        "OrderItemList": [
            {
                "CatalogID": 1,
                "ItemIndexID": 1,
                "ItemID": "444444"
            },
            {
                "CatalogID": 1,
                "ItemIndexID": 1,
                "ItemID": "666666"
            }
        ]
    }
]

print([j["ItemID"]  for i in a for j in i["OrderItemList"]])

Вывод:

['444444', '666666']
0 голосов
/ 14 июля 2020

Учитывая структуру, которую вы показываете в вопросе, вы должны иметь возможность сделать что-то вроде

for order in content[0]['OrderItemList']:
    print(order['ItemID'])

, которое напечатает каждое из ItemID, присутствующих в ответе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...