python - 使用 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)
你能告诉我一个怎么做吗?
解决方案
您应该使用该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))
这只是一个例子。
推荐阅读
- node.js - 为什么我的 POST 请求仅适用于调试器?
- sql - 进行打印唯一对的查询?
- python - 使用 python itertools 查找总和为目标值的子列表元素的所有可能组合
- javascript - Firestore 不断覆盖。如何只设置非空值?
- javascript - 将 Nashorn 迁移到 GraalVM 以缓存和执行脚本
- python - 用Python中另一列值的条件填充列的NA
- macos - 如何打开内部 shell 命令、二进制文件并分析它们的代码?
- machine-learning - 为什么我们需要 test_generator 和 val_generator 来进行数据增强
- java - How to check if there are 3 consecutive 1s in array in java?
- javascript - changes doesn't take effect on JSON file on heroku