У меня есть этот JSON (я не даю вам всего этого, потому что он чертовски длинный, но вам остальное не нужно.)
cve" : {
"data_type" : "CVE",
"data_format" : "MITRE",
"data_version" : "4.0",
"CVE_data_meta" : {
"ID" : "CVE-2018-9991",
"ASSIGNER" : "cve@mitre.org"
},
"affects" : {
"vendor" : {
"vendor_data" : [ {
"vendor_name" : "frog_cms_project",
"product" : {
"product_data" : [ {
"product_name" : "frog_cms",
"version" : {
"version_data" : [ {
"version_value" : "0.9.5"
} ]
}
} ]
}
} ]
}
},
Я хочу напечатать поставщиканазвание этой cve.Итак, что я сделал:
with open("nvdcve-1.0-2018.json", "r") as file:
data = json.load(file)
increment = 0
number_cve = data["CVE_data_numberOfCVEs"]
while increment < int(number_cve):
print (data['CVE_Items'][increment]['cve']['CVE_data_meta']['ID'])
print (',')
print (data['CVE_Items'][increment]['cve']['affects']['vendor']['vendor_data'][0]['vendor_name'])
print ("\n")
increment +=
Причина, по которой я это сделал некоторое время, заключается в том, что в файле JSON много CVE, поэтому я сделал данные ['CVE_Items'] [инкремент]['cve'] (и эта часть работает нормально, строка `print (data ['CVE_Items'] [increment] ['cve'] ['CVE_data_meta'] ['ID'] работает хорошо).
Моя ошибка в строке print (data['CVE_Items'][increment]['cve']['affects']['vendor']['vendor_data'][0]['vendor_name'])
, pyhton выдает мне индекс списка вне ошибки диапазона.
Но если я хорошо читаю этот JSON, то vendor_data - это массив из 1 столбца, поэтому vendor_name - это['vendor_data'] [0] ['vendor_name'] не так ли?
Единственный способ проанализировать найденное мной vendor_name:
for value in data['CVE_Items'][a]['cve']['affects']['vendor']['vendor_data']:
print (value['vendor_name'])
вместо print (data['CVE_Items'][increment]['cve']['affects']['vendor']['vendor_data'][0]['vendor_name'])
И делать только для одной итерации довольно отвратительно: s, но, по крайней мере, значение - это данные ['CVE_Items'] [a] ['cve'] ['влияет на'] ['vendor']['vendor_data'] [0], который я хотел ....
Кто-нибудь что-нибудь знает об этом?