Во-первых, ваш json недействителен, в нем отсутствуют закрывающие скобки. это работает:
{
"assets": [{
"id": 518447,
"created_at": "2019-09-10T10:13:38Z",
"priority": 10,
"operating_system": "Microsoft - Windows - Windows Server 2008 R2, Enterprise Edition - SP1",
"notes": null,
"last_booted_at": null,
"primary_locator": "external_id",
"locator": "1112359",
"vulnerabilities_count": 22,
"status": "active",
"last_seen_time": "2019-09-08T16:00:17Z",
"network_ports": [{
"id": 33550493,
"port_number": 180,
"extra_info": "",
"hostname": null,
"name": "HTTP",
"ostype": "",
"product": "JBoss EAP",
"protocol": "tcp",
"state": "open",
"version": "4.2.3.GA"
},
{
"id": 33550494,
"port_number": 100,
"extra_info": "",
"hostname": null,
"name": "SNMP",
"ostype": "",
"product": null,
"protocol": "udp",
"state": "open",
"version": null
}
],
"tags": [
"Windows Server",
"DO - DO SPG BOM"
],
"owner": null,
"urls": {
"vulnerabilities": ""
},
"ip_address": "10.10.10.1",
"database": null,
"hostname": null,
"fqdn": null,
"netbios": null,
"application": null,
"file": null,
"mac_address": null,
"ec2": null,
"url": null,
"external_id": "1112359",
"ipv6": null,
"asset_groups": [{
"id": 4,
"name": "0 Global - All"
},
{
"id": 204,
"name": "DO - All"
},
{
"id": 417,
"name": "Do - All"
}
]
}]
}
как только вы создали переменную с помощью json, вы можете получить доступ к данным следующим образом:
print(json_format['assets'])
Это вернет все объекты в ['assets']:
[{'id': 518447, 'created_at': '2019-09-10T10:13:38Z', 'priority': 10, 'operating_system': 'Microsoft - Windows - Windows Server 2008 R2, Enterprise Edition - SP1', 'notes': None, 'last_booted_at': None, 'primary_locator': 'external_id', 'locator': '1112359', 'vulnerabilities_count': 22, 'status': 'active', 'last_seen_time': '2019-09-08T16:00:17Z', 'network_ports': [{'id': 33550493, 'port_number': 180, 'extra_info': '', 'hostname': None, 'name': 'HTTP', 'ostype': '', 'product': 'JBoss EAP', 'protocol': 'tcp', 'state': 'open', 'version': '4.2.3.GA'}, {'id': 33550494, 'port_number': 100, 'extra_info': '', 'hostname': None, 'name': 'SNMP', 'ostype': '', 'product': None, 'protocol': 'udp', 'state': 'open', 'version': None}], 'tags': ['Windows Server', 'DO - DO SPG BOM'], 'owner': None, 'urls': {'vulnerabilities': ''}, 'ip_address': '10.10.10.1', 'database': None, 'hostname': None, 'fqdn': None, 'netbios': None, 'application': None, 'file': None, 'mac_address': None, 'ec2': None, 'url': None, 'external_id': '1112359', 'ipv6': None, 'asset_groups': [{'id': 4, 'name': '0 Global - All'}, {'id': 204, 'name': 'DO - All'}, {'id': 417, 'name': 'Do - All'}]}]
Вы можете выбрать следующий объект, добавив его непосредственно после объекта ['assets']:
print(json_format['assets'][0]['ip_address'])
возвращает:
10.10.10.1
И этопродолжается и продолжается:
print(json_format['assets'][0]['network_ports'][0]['version'])
возвращает
4.2.3.GA
[0] используется так, как мы хотим получить данные от первого вхождения объекта ['assets'] и первого вхожденияиз сетевых портов. [1] будет вторым объектом с таким названием.