繁体   English   中英

如何从 json 字典中的字符串分配变量?

[英]How can I assign a variable from a string inside a json dictionary?

这是我从中获取数据的每个资产的 output

在此处输入图像描述

我可以轻松访问字典值,

page = json_response["page"].get("number", 0)

但是我如何访问数组的值,我希望能够将每个关键漏洞加起来

这是回报,我试图从漏洞子数组中获取关键、中等、严重的值

{'links': [{}],
 'page': {'number': 6, 'size': 10, 'totalPages': 13, 'totalResources': 123},
 'resources': [{'addresses': [],
                'assessedForPolicies': False,
                'assessedForVulnerabilities': True,
                'configurations': [],
                'databases': [],
                'files': [],
                'history': [],
                'hostName': 'corporate-workstation-1102DC.acme.com',
                'hostNames': [],
                'id': 282,
                'ids': [],
                'ip': '182.34.74.202',
                'links': [],
                'mac': 'AB:12:CD:34:EF:56',
                'os': 'Microsoft Windows Server 2008 Enterprise Edition SP1',
                'osFingerprint': {},
                'rawRiskScore': 31214.3,
                'riskScore': 37457.16,
                'services': [],
                'software': [],
                'type': '',
                'userGroups': [],
                'users': [],
                'vulnerabilities': {'critical': 16,
                                    'exploits': 4,
                                    'malwareKits': 0,
                                    'moderate': 3,
                                    'severe': 76,
                                    'total': 95}}]}

你可以像这样阅读vulnerabilities

json.loads(json_response)['resources'][0]['vulnerabilities']['critical']

# Out
16

如果你想以你知道的方式提取值而不是使用 json 尝试:

crit_value = json_response["resources"][0]["vulnerabilities"].get("critical", 16)

你解释得不好,但我敢打赌resources是原始数据中多个字典的列表,你想对所有这些值做一些事情。

vulnerabilities = []
resources = json_response['resources']
for d in resources:
    if 'vulnerabilities' in d:
        vulnerabilities.append(d['vulnerabilities'])

print(vulnerabilities)
print(sum(x.get('critical', 0) for x in vulnerabilities))
print(sum(x.get('severe', 0) for x in vulnerabilities))

Output:

[{'critical': 16, 'exploits': 4, 'malwareKits': 0, 'moderate': 3, 'severe': 76, 'total': 95}]
16
76

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM