Java 将目录转换为字符串到json数组节点

Java 将目录转换为字符串到json数组节点,java,json,Java,Json,将此列表指定为字符串数组: Cars/Truck/Regular Cars/Truck/4x4/Lifted Cars/Jeep/4x4 Cars/Convertable 如何将其解析为json格式: [{"name":"Cars","nodes":[{"name":"Truck","nodes":[{"name":"Regular","nodes":[]},{"name":"4x4","nodes":[{"name":"Lifted","nodes":[]}]}]},{"name":"Jee

将此列表指定为字符串数组:

Cars/Truck/Regular
Cars/Truck/4x4/Lifted
Cars/Jeep/4x4
Cars/Convertable
如何将其解析为json格式:

[{"name":"Cars","nodes":[{"name":"Truck","nodes":[{"name":"Regular","nodes":[]},{"name":"4x4","nodes":[{"name":"Lifted","nodes":[]}]}]},{"name":"Jeep","nodes":[{"name":"4x4","nodes":[]}]},{"name":"Convertable","nodes":[]}]}]
到目前为止,这就是我所要经历的一切。现在,我们必须找出节点类的部分

String[] li = new String[4];
li[0] = "Cars/Truck/Regular";
li[1] = "Cars/Truck/4x4/Lifted";
li[2] = "Cars/Jeep/4x4";
li[3] = "Cars/Convertable";
doAll(li);
public void doAll(String[] files) {
    try {
        for (String file : files) {
            String[] f = file.split("/");
            if (f.length>1) {
                logger.info("directory:"+file);
                f = (String[]) ArrayUtils.removeElement(f, f[0]);
                String temp = "";
                for(String ff : f) temp=temp+"/"+ff;
                temp = temp.replaceFirst("/", "");
                doAll(new String[]{temp});
            } else if(f.length==1){
                logger.info("file:"+file);
            }
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
}
产生:

directory:Cars/Truck/Regular
directory:Truck/Regular
file:Regular
directory:Cars/Truck/4x4/Lifted
directory:Truck/4x4/Lifted
directory:4x4/Lifted
file:Lifted
directory:Cars/Jeep/4x4
directory:Jeep/4x4
file:4x4
directory:Cars/Convertable
file:Convertable

可能您必须首先创建一个保存这些数据的结构,然后将所有数据馈送到该结构中,最后将结果序列化为json字符串。伪代码类似于:

class Node {
  String name;
  List<Node> nodes;    // sub nodes

  /*
   Add new node under current node.
  */
  public void addNode(Node node) {...}
}
类节点{
字符串名;
列出节点;//子节点
/*
在当前节点下添加新节点。
*/
public void addNode(节点节点){…}
}

从第一个值(比如Car)开始创建结构,然后尝试在其子节点(或者子节点的子节点)中递归查找左值(比如/Truck、/Truck/Regular)。如果找到,则不执行任何操作,否则将创建一个子节点并将其添加到上次找到的节点

您已经尝试了哪些代码?@FishStix在递归部分添加了codeconfused。我不知道该如何设置该部分