【问题标题】:How to get list of values of a single key from JSON webhook with flask?如何使用烧瓶从 JSON webhook 获取单个键的值列表?
【发布时间】:2020-07-13 21:03:31
【问题描述】:

我有一个 webhook 侦听器,用于侦听特定 webhook 并捕获 JSON 数据。

json 数据示例。

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

WebHook 监听器

@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 值,这是不切实际的,因为可能有数百个项目。我尝试了循环和迭代,但没有成功。

【问题讨论】:

  • “没有成功”是什么意思?您到底尝试了什么,怎么没用?

标签: python python-3.x flask


【解决方案1】:

鉴于您在问题中显示的结构,您应该能够执行类似的操作

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

这将打印响应中的每个ItemID

【讨论】:

  • 我不能确定,因为没有什么可以解决的,但我认为 OP 的问题可能与 Flask 更相关。
  • 所以我尝试了类似的方法但没有奏效。看起来我有一个缩进错误。谢谢!如果将来有人试图实现同样的目标,这就是解决方案。
【解决方案2】:

附加的 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']

【讨论】:

    猜你喜欢
    • 2021-06-10
    • 2017-04-16
    • 1970-01-01
    • 2019-06-24
    • 1970-01-01
    • 2021-12-14
    • 2020-07-23
    • 2018-06-08
    • 1970-01-01
    相关资源
    最近更新 更多