简体   繁体   English

使用 Python 解析嵌套的 json 数据

[英]Parsing nested json data using Python

[
    {
        "asset_id": 49,
        "status": "success",
        "name": "de1",
        "app": "CCid",
        "action_results": [
            {
                "status": "success",
                "data": [
                    {
                        "report": {
                            "status": {
                                "origin": "sa",
                                "status": "Up.",
                                "sha1": "4a",
                                "sample_started_at": 159,
                                "running_on": "mt",
                                "ran": true,
                                "auto": true,
                                "vm": "w"
                            },
                            "artifacts": {
                                "1": {
                                    "size": 599518,
                                    "mime-type": "applic=binary",
                                    "antivirus": {
                                        "reversing_labs": {
                                            "status": "UNKNOWN",
                                            "scanner_count": 0,
                                            "scanner_match": 0,
                                            "threat_name": "",
                                            "query_hash": {
                                                "sha256": "029"
                                            },
                                            "last_seen": "0001-01-01T00:00:00Z"
                                        }
                                    },
                                    "entropy": 7.9870740440306
                                },
                                "10": {
                                    "size": 599518,
                                    "mime-type": "applic=binary",
                                    "antivirus": {
                                        "reversing_labs": {
                                            "status": "UNKNOWN",
                                            "scanner_count": 0,
                                            "scanner_match": 0,
                                            "threat_name": "",
                                            "query_hash": {
                                                "sha256": "d38"
                                            },
                                            "last_seen": "0001-01-01T00:00:00Z"
                                        }
                                    },
                                    "entropy": 1
                                }
                            }
                        }
                    }
                ],
                "app_id": 15
            }
        ]
    }
]            
             

I am trying to access scanner count and scanner match values using python But not getting the required result.我正在尝试使用 python 访问扫描仪计数和扫描仪匹配值,但没有得到所需的结果。

action_results = results[0].get('action_results', [])
action_status = action_results[0].get('status', 'failed') 
results_data = action_results[0].get('data', []) 
sandbox_report = results_data[0].get('report', {})
for key,value in sandbox_report.items():
            if key == "artifacts":
                artifacts = list()
                for each_key, each_value in value.items():
                    for i in each_value:
                        if i == "antivirus":
                            artifact_item = dict()
                            reversing_labs = i.get('reversing_labs', {})
                            artifact_item['scanner_count'] = reversing_labs.get('scanner_count', 0)

Can anyone point out whats wrong?谁能指出什么是错的?

You can try你可以试试

action_results = results[0].get('action_results', [])
action_status = action_results[0].get('status', 'failed')
results_data = action_results[0].get('data', [])
sandbox_report = results_data[0].get('report', {})
artifact_item = dict()
for key,value in sandbox_report.items():
            if key == "artifacts":
                artifacts = list()
                for each_key, each_value in value.items():
                    for k, v in each_value.items():
                        if k == "antivirus":
                            reversing_labs = v.get('reversing_labs', {})
                            artifact_item[key] = [{'scanner_count' : reversing_labs.get('scanner_count', 0)},
                                                    {'scanner_match' : reversing_labs.get('scanner_match', 0)}]
print(artifact_item)

Output Output

{'artifacts': [{'scanner_count': 0}, {'scanner_match': 0}]}

This code will extract the values of scanner_count and scanner_match in a list in a dictionary that the key value is artifacts.此代码将在键值为工件的字典中的列表中提取scanner_countscanner_match的值。

this is how i'd do it.我就是这样做的。

jsonData = json.loads(results)
nested = jsonData[0]['action_results'][0]['data'][0]['report']['artifacts']

for artifact in nested:
    print(f"Scanner count = {nested[artifact]['antivirus']['reversing_labs']['scanner_count']}")
    print(f"Scanner match = {nested[artifact]['antivirus']['reversing_labs']['scanner_match']}")

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

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