试图找到对嵌套的 json 数据进行排序的最简单方法。到目前为止我尝试过的一切似乎都失败了。 我正在使用 Python 2.7 并尝试按名称属性排序。 这是我尝试过的众多 Python 示例之一:
def sort_json(self,json_data):
data_obj = json.dumps(json_data,sort_keys=True)
return sorted(data_obj["data"]["workflows"]["allWorkflows"],
key=lambda d: d["name"])
这是未排序的 json 示例:
{
"data": {
"workflows": {
"allWorkflows": [{
"name": "ICX-SLX Config Basic Support",
"version": 106,
"path": "/Workflows/System/Config/Basic Support/ICX-SLX Config Basic Support"
}, {
"name": "ICX Upgrade Firmware",
"version": 37,
"path": "/Workflows/System/Inventory/Upgrade/ICX Upgrade Firmware"
}, {
"name": "Quarantine_PCAP_Flow",
"version": 357,
"path": "/Workflows/System/Security/Quarantine_PCAP_Flow"
}, {
"name": "ICX-MLX Backup Configuration",
"version": 101,
"path": "/Workflows/System/Inventory/Backup/ICX-MLX Backup Configuration"
}, {
"name": "ICX-SLX-MLX Restart Device",
"version": 15,
"path": "/Workflows/System/Inventory/Restart/ICX-SLX-MLX Restart Device"
}, {
"name": "Revert_Quarantine_End_System",
"version": 169,
"path": "/Workflows/System/Security/Revert_Quarantine_End_System"
}]
}
}
}
任何工作示例将不胜感激。
最佳答案
如果我理解正确,您需要删除该行:
data_obj = json.dumps(json_data,sort_keys=True)
例如:
def sort_json(json_data):
workflows = json_data["data"]["workflows"]["allWorkflows"]
return sorted(workflows, key=lambda d: d["name"])
jd = {
"data": {
"workflows": {
"allWorkflows": [{
"name": "ICX-SLX Config Basic Support",
"version": 106,
"path": "/Workflows/System/Config/Basic Support/ICX-SLX Config Basic Support"
}, {
"name": "ICX Upgrade Firmware",
"version": 37,
"path": "/Workflows/System/Inventory/Upgrade/ICX Upgrade Firmware"
}, {
"name": "Quarantine_PCAP_Flow",
"version": 357,
"path": "/Workflows/System/Security/Quarantine_PCAP_Flow"
}, {
"name": "ICX-MLX Backup Configuration",
"version": 101,
"path": "/Workflows/System/Inventory/Backup/ICX-MLX Backup Configuration"
}, {
"name": "ICX-SLX-MLX Restart Device",
"version": 15,
"path": "/Workflows/System/Inventory/Restart/ICX-SLX-MLX Restart Device"
}, {
"name": "Revert_Quarantine_End_System",
"version": 169,
"path": "/Workflows/System/Security/Revert_Quarantine_End_System"
}]
}
}
}
result = sort_json(jd)
print(result)
输出
[{'version': 37, 'name': 'ICX Upgrade Firmware', 'path': '/Workflows/System/Inventory/Upgrade/ICX Upgrade Firmware'}, {'version': 101, 'name': 'ICX-MLX Backup Configuration', 'path': '/Workflows/System/Inventory/Backup/ICX-MLX Backup Configuration'}, {'version': 106, 'name': 'ICX-SLX Config Basic Support', 'path': '/Workflows/System/Config/Basic Support/ICX-SLX Config Basic Support'}, {'version': 15, 'name': 'ICX-SLX-MLX Restart Device', 'path': '/Workflows/System/Inventory/Restart/ICX-SLX-MLX Restart Device'}, {'version': 357, 'name': 'Quarantine_PCAP_Flow', 'path': '/Workflows/System/Security/Quarantine_PCAP_Flow'}, {'version': 169, 'name': 'Revert_Quarantine_End_System', 'path': '/Workflows/System/Security/Revert_Quarantine_End_System'}]
关于Python JSON 排序嵌套数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53600076/