Python JSON 排序嵌套数据

标签 python json sorting

试图找到对嵌套的 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/

相关文章:

python - 实现 FTP 接口(interface)/协议(protocol)

python - 对所选列进行分组和标准化 Pandas DF

javascript - 难以将 json 字符串转换为 d3 中的日期格式

python - 从 JSON 加载类变量?

java - 如何比较 Java 中的类和继承类

sorting - 如何在 jasper 中对交叉表的列标题值进行排序?

python - 限制上传,直到管理员批准在 Django 中上传的文件

json - swift : The data couldn’t be read because it isn’t in the correct format

.net - 如何在执行 DataBind 之前对 DataSet 进行排序?

python - readlines() 是否关闭文件?