我正在调用一个API,并得到如下所示的响应。
{
"status": 200,
"errmsg": "OK",
"data": {
"total": 12,
"items": [{
"id": 11,
"name": "BBC",
"priority": 4,
"levelStr": "All",
"escalatingChainId": 3,
"escalatingChain": {
"inAlerting": false,
"throttlingAlerts": 20,
"enableThrottling": true,
"name": "Example123",
"destination": [],
"description": "",
"ccdestination": [],
"id": 3,
"throttlingPeriod": 10
}
},
{
"id": 21,
"name": "CNBC",
"priority": 4,
"levelStr": "All",
"escalatingChainId": 3,
"escalatingChain": {
"inAlerting": false,
"throttlingAlerts": 20,
"enableThrottling": true,
"name": "Example456",
"destination": [],
"description": "",
"ccdestination": [],
"id": 3,
"throttlingPeriod": 10
}
}
]
}
}
字符串
我需要清理一下这个JSON,并生成一个简单的JSON,如下所示,其中escalatingChainName
是escalatingChain
列表中的name
,以便我可以将其写入CSV文件。
{
"items": [{
"id": 11,
"name": "BBC",
"priority": 4,
"levelStr": "All",
"escalatingChainId": 3,
"escalatingChainName": "Example123"
},
{
"id": 21,
"name": "CNBC",
"priority": 4,
"levelStr": "All",
"escalatingChainId": 3,
"escalatingChainName": "Example456"
}
]
}
型
有没有一个JSON函数可以用来只复制必要的键值或嵌套键值到一个新的JSON对象?
使用下面的代码,我可以得到详细信息列表。
json_response = response.json()
items = json_response['data']
details = items['items']
型
我可以打印单个列表项,
for x in details:
print(x)
型
我如何从这里只提取必要的字段,如id,name,priority和escalatingchain
中的name来创建一个新的列表或JSON?
4条答案
按热度按时间i34xakig1#
没有现成的函数可以满足你的要求,所以你需要写一个函数。幸运的是,在这种情况下这并不太难--基本上你只需要从现有的数据中提取出你想要的数据片段来创建一个新的项目列表。
字符串
jgovgodb2#
您可以尝试:
字符串
knpiaxh13#
有两种方法可以实现这一点,这取决于你是使用python列表和字典理解来处理变量还是
.json
文件:1.其中字典(嵌套)类型的数据变量已经定义:
字符串
1.或者(由于您引用了
json
包)如果您将响应保存为.json
文件:型
两者都产生输出:
型
yftpprvb4#
有一个更好的方法来做到这一点,通过使用像这样的
generator
:字符串
这将调用一个递归调用,并给予您想要的key值,即使代码之间有列表。只需使用如下函数调用它:
型