有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java未排序列表与子对象嵌套在一起

我有一个未排序的列表(更准确地说是LDAP DNs列表),如下所示:

ou=org02,ou=org,dc=example,dc=com
ou=org,dc=example,dc=com
ou=org01,ou=org,dc=example,dc=com
ou=suborg01,ou=org01,ou=org,dc=example,dc=com
ou=suborg02,ou=org01,ou=org,dc=example,dc=com
ou=org03,ou=org,dc=example,dc=com
ou=subsuborg01,ou=suborg01,ou=org01,ou=org,dc=example,dc=com
ou=suborg03,ou=org01,ou=org,dc=example,dc=com

我想把这个列表转换成一个嵌套的json结构,如下所示:

{
  "key": "ou=org,dc=example,dc=com",
  "children": [
    {
      "key": "ou=org01,ou=org,dc=example,dc=com"
      "children": [
        {
          "key": "ou=suborg01,ou=org01,ou=org,dc=example,dc=com"
          "children": [
            {
              "key": "ou=subsuborg01,ou=suborg01,ou=org01,ou=org,dc=example,dc=com"
            }
          ]
        },
        {
          "key": "ou=suborg02,ou=org01,ou=org,dc=example,dc=com"
        },
        {
          "key": "ou=suborg03,ou=org01,ou=org,dc=example,dc=com"
        }
      ]
    },
    {
      "key": "ou=org02,ou=org,dc=example,dc=com"
    }
  ]
}  

最有效的方法是什么?最好是Java语言


共 (1) 个答案

  1. # 1 楼答案

    //导入java。util。ArrayList; //导入组织。布森。文件

        Document root = new Document();
        ArrayList rootChildren = new ArrayList();
        Document rootChildren0 = new Document();
        ArrayList rootChildren0Children = new ArrayList();
        Document rootChildren0Children0 = new Document();
        ArrayList rootChildren0Children0Children = new ArrayList();
        Document rootChildren0Children0Children0 = new Document();
        Document rootChildren0Children1 = new Document();
        Document rootChildren0Children2 = new Document();
        Document rootChildren1 = new Document();
    
        root.append("key", "ou=org,dc=example,dc=com");
    
        rootChildren0.append("key", "ou=org01,ou=org,dc=example,dc=com");
    
        rootChildren0Children0.append("key", "ou=suborg01,ou=org01,ou=org,dc=example,dc=com");
    
        rootChildren0Children0Children0.append("key", "ou=subsuborg01,ou=suborg01,ou=org01,ou=org,dc=example,dc=com");
    
        rootChildren0Children1.append("key", "ou=suborg02,ou=org01,ou=org,dc=example,dc=com");
    
        rootChildren0Children2.append("key", "ou=suborg03,ou=org01,ou=org,dc=example,dc=com");
    
        rootChildren1.append("key", "ou=org02,ou=org,dc=example,dc=com");
    
        if (!rootChildren.isEmpty()) {
            root.append("children", rootChildren);
        }
        if (!rootChildren0Children.isEmpty()) {
            rootChildren0.append("children", rootChildren0Children);
        }
        if (!rootChildren0Children0Children.isEmpty()) {
            rootChildren0Children0.append("children", rootChildren0Children0Children);
        }
        if (!rootChildren0Children0Children0.isEmpty()) {
            rootChildren0Children0Children.add(rootChildren0Children0Children0);
        }
        if (!rootChildren0Children0Children.isEmpty()) {
            rootChildren0Children0.append("children", rootChildren0Children0Children);
        }
        if (!rootChildren0Children0.isEmpty()) {
            rootChildren0Children.add(rootChildren0Children0);
        }
        if (!rootChildren0Children.isEmpty()) {
            rootChildren0.append("children", rootChildren0Children);
        }
        if (!rootChildren0Children1.isEmpty()) {
            rootChildren0Children.add(rootChildren0Children1);
        }
        if (!rootChildren0Children.isEmpty()) {
            rootChildren0.append("children", rootChildren0Children);
        }
        if (!rootChildren0Children2.isEmpty()) {
            rootChildren0Children.add(rootChildren0Children2);
        }
        if (!rootChildren0Children.isEmpty()) {
            rootChildren0.append("children", rootChildren0Children);
        }
        if (!rootChildren0.isEmpty()) {
            rootChildren.add(rootChildren0);
        }
        if (!rootChildren.isEmpty()) {
            root.append("children", rootChildren);
        }
        if (!rootChildren1.isEmpty()) {
            rootChildren.add(rootChildren1);
        }
        if (!rootChildren.isEmpty()) {
            root.append("children", rootChildren);
        }
    
        System.out.println(root.toJson());