python - python从具有重复名称的json数组中解析(mitre att&ck)
问题描述
我是一个新手,试图从 miter att&ck json 文件的 repo 中解析数据,并且一直停留在如何解析其中一个字段的数据 - 攻击阶段名称。它们存储在一个数组中,有时会有重复的名称,见下文:
"type": "attack-pattern",
"kill_chain_phases": [
{
"kill_chain_name": "mitre-attack",
"phase_name": "persistence"
},
{
"kill_chain_name": "mitre-attack",
"phase_name": "privilege-escalation"
}
],
如果我尝试返回 的值get_phase(attack.kill_chain_phases[0].phase_name)
,python 仅在有时有多个值时返回一个值,例如privilege-escalation
如果我试图搞乱并使用这样get_phase(attack.kill_chain_phases[0].phase_name[0])
的东西,输出是其中一个阶段名称的第一个字符c
如果我尝试做一些事情,比如get_phase(attack_pattern.kill_chain_phases[1].phase_name)
我得到一个超出索引的错误......
有没有人知道如何使用 python 来获取这些字段?还有谁知道如何描述这种数据格式和/或我正在尝试做什么,以便我可以尝试搜索解决方案?提前致谢!
解决方案
您将需要为此使用循环。获取要查找所有值的项目的父项,然后您可以循环并获取所有子项的值。
import json
json_string = """{
"type": "attack-pattern",
"kill_chain_phases": [
{
"kill_chain_name": "mitre-attack",
"phase_name": "persistence"
},
{
"kill_chain_name": "mitre-attack",
"phase_name": "privilege-escalation"
}
]
}
"""
parsed_json = json.loads(json_string)
# Loop through the parent "kill_chain_phases"
for kill_chain_phase in parsed_json["kill_chain_phases"]:
# print out the children "phase_name" values
print(kill_chain_phase["phase_name"]
你得到第一个字符,get_phase(attack.kill_chain_phases[0].phase_name[0]
因为:
get_phase(attack.kill_chain_phases[0].phase_name[0]
=“持久性”
然后 Python 获取该字符串并将其视为一个列表: ["p", "e", "r", "s", "i", "s", "t", "e", "n", " c", "e"]
所以phase_name[0]
会显示"p"
。
希望这是有道理的。
更多信息在这里
推荐阅读
- symfony - PHPUnit 返回 0 个被覆盖的方法
- ios - iOS 中日期选择器小部件的变化?
- c# - 具有依赖注入的 C# 抽象类
- lua - 使用循环解决如果数字 < 超过 200 个先前的数字,则返回 1
- xml - InDesign XML 导入:如何使用样式组?
- html - 使用jquery将数据动态附加到表中,下载时只会得到一行
- asp.net - Asp.Net Core 客户端验证不起作用
- javascript - 回调跳过了一部分
- python - 基类和继承类的类型注释 - Generic 和 TypeVar 是正确的方法吗?
- c - 如何将 uint8_t 数组转换为字符串?