首页 > 解决方案 > 使用 Python 解析 JSON

问题描述

我正在调用一个 API,我得到一个像上面这样的 JSON 响应:

{
  "data": {
    "styles": [
      {
        "groups": [
          {
            "product": [
              {
                "code": "0000001",
                "date": null
              }
            ]
          },
          {
            "product": [
              {
                "code": "0000002",
                "date": "2020-05-02T00:00:00.000Z"
              }
            ]
          },
          {
            "product": [
              {
                "code": "0000003",
                "date": "2020-04-22T00:00:00.000Z"
              }
            ]
          }
        ]
      },
      {
        "groups": [
          {
            "product": [
              {
                "code": "0000011",
                "date": "2020-05-12T00:00:00.000Z"
              }
            ]
          },
          {
            "product": [
              {
                "code": "0000012",
                "date": "2020-05-12T00:00:00.000Z"
              }
            ]
          }
        ]
      }
    ]
  }
}

我不熟悉处理 JSON,这个是超级嵌套的。我想做的就是创建一个元组(或字典),它看起来像:

(0000001, null)
(0000002, 2020-05-02T00:00:00.000Z)
(0000003, 2020-04-22T00:00:00.000Z)
(0000011, 2020-05-12T00:00:00.000Z)
(0000012, 2020-05-12T00:00:00.000Z)

你能告诉我一个怎么做吗?

标签: pythonjson

解决方案


您应该使用该json库:

import json

def json_to_dict(api_response):
    # I assume the api response is a string 
    api_response_dict = json.loads(api_response)
    return api_response_dict

这将创建一个包含所有内容的字典。然后你可以解析这个字典,只取你关心的键值对:

list_of_products = []
for product_group in api_response_dict['data']['styles']:
    for product in product_group['groups']:
        code = product['product'][0]['code']
        date = product['product'][0]['date']
        list_of_products.append((code, date))

这只是一个例子。


推荐阅读