【问题标题】:Parse JSON using Python [closed]使用 Python 解析 JSON [关闭]
【发布时间】:2020-09-20 17:17:53
【问题描述】:

我正在调用一个 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)

你能告诉我怎么做吗?

【问题讨论】:

  • 这里的答案应该适合你:link

标签: python json


【解决方案1】:

您应该使用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))

这只是一个例子。

【讨论】:

    【解决方案2】:

    您的问题是关于使用 Python 解析 JSON。

    您可以使用json.loads 执行此操作:

    import json
    my_string = '{"foo": "bar"}'
    data = json.loads(my_string)
    

    但是,您似乎正在使用 API 响应。如果你使用requests(你应该),你可以使用

    response = requests.get([...])
    data = response.json()
    

    【讨论】:

      【解决方案3】:
      import json
      
      # your work
      
      d = json.load(xxxx) # load it.
      for i in d["data"]["styles"]:
          for j in i["groups"]:
              print((j['product'][0]['code'], j['product'][0]['date']))
      

      结果:

      ('0000001', None) # In python, there is no null. it will be replace to None.
      ('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')
      

      【讨论】:

        猜你喜欢
        • 2018-08-29
        • 1970-01-01
        • 2014-01-30
        • 1970-01-01
        • 1970-01-01
        • 2018-07-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多