【问题标题】:Extract data from nested JSON - Python从嵌套的 JSON 中提取数据 - Python
【发布时间】:2020-06-28 01:00:58
【问题描述】:

我有来自 HTTP 请求的以下输出,我正在尝试过滤掉数据以提取两位信息。

{
"error": false, 
"statusCode": 200, 
"message": "OK", 
"data": {
    "lastChecked": "2020-03-16T22:02:35.106Z", 
    "sales_stats": [
        {"department": "online", 
        "country": "United Kingdom", 
        "orders": 11840, 
        "delivered": 2101}, 

        {"department": "instore", 
        "country": "United Kingdom", 
        "orders": 120, 
        "delivered": 95}, 

        {"department": "other", 
        "country": "United Kingdom", 
        "orders": 35, 
        "delivered": 1}
        ]}}

我只关心在线部门,我只需要显示订单并从中交付。

我试图提取这个但是无济于事。

我想要的只是下面的代码。

data_orders = <11840 extracted from the response>
data_delivered = <2101 extracted from the response>

print("Orders = ", data_orders)
print('Delivered = ", data_delivered)

对于最终的结果

Orders = 11840
Delivered = 2101

【问题讨论】:

    标签: python json nested extract


    【解决方案1】:

    试试这样的:

    json = {
      "error": False,
      "statusCode": 200,
      "message": "OK",
      "data": {
        "lastChecked": "2020-03-16T22:02:35.106Z",
        "sales_stats": [
          {
            "department": "online",
            "country": "United Kingdom",
            "orders": 11840,
            "delivered": 2101
          },
          {
            "department": "instore",
            "country": "United Kingdom",
            "orders": 120,
            "delivered": 95
          },
          {
            "department": "other",
            "country": "United Kingdom",
            "orders": 35,
            "delivered": 1
          }
        ]
      }
    }
    
    json_data = json["data"]
    
    # The online department is the first element in the sales_stats list
    online_data_orders = json_data["sales_stats"][0]["orders"]
    online_data_delivered = json_data["sales_stats"][0]["delivered"]
    
    print(f"Orders = {online_data_orders}")
    print(f"Delivered = {online_data_delivered}")
    

    输出:

    Orders = 11840
    Delivered = 2101
    

    【讨论】:

      【解决方案2】:
      resp = requests.get(url=url, params=params)
      data = resp.json()
      data_orders = data['data']['sales_stats'][0]['orders']
      

      你可以为data_delivered做类似的事情

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-06-10
        • 1970-01-01
        • 2022-07-12
        • 2020-11-07
        • 2017-12-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多