从另一个包含不同键/值的对象中选择JSON键



我有以下JSON数据:

[
{
"urls": [
"outlook.office.com",
"outlook.office365.com"
],
"ips": [
"192.168.0.0/16"
]
},
{
"urls": [
"*.mail.protection.outlook.com"
],
"ips": [
"172.16.0.0/12"
]
},
{
"urls": [
"r1.res.office365.com",
"r3.res.office365.com",
"r4.res.office365.com",
"xsi.outlook.com"
],
}
]

我想提取所有与"*.mail.protection.outlook.com"URL相关的IP地址。

我目前拥有的代码是:

import json
with open('ips.json') as i:
ip = json.load(i)
for urls in ip:
print(urls["ips"])

它为每个对象打印"ips"数组的所有成员,但我只想要包含的对象的数组

[ { urls: [ "*.mail.protection.outlook.com" ] } ]

最好使用纯Python(没有非标准库(解决方案,以便更容易地部署到AWS Lambda

简单的loop语句。

import json
with open('demo.json') as i:
datas = json.load(i)
ips = []
search_url = "*.mail.protection.outlook.com"
for data in datas:
if 'urls' in data:
if search_url in data['urls']:
if 'ips' in data:
ips.extend(data['ips'])
print(ips)

输出

['172.16.0.0/12']

最新更新