Java 使用JSON文件递归创建文件夹

Java 使用JSON文件递归创建文件夹,java,json,recursion,Java,Json,Recursion,我有两个json文件 所有_packages.json { "backbone": ["jQuery", "underscore"], "jQuery": ["queryJ"], "underscore": ["lodash"], "queryJ": [], "lodash": [] } dependencies.json { "projectName": "Test0000", "dependencies": ["backbone"] } 我正在尝试实现一个简单

我有两个json文件

所有_packages.json

{
  "backbone": ["jQuery", "underscore"],
  "jQuery": ["queryJ"],
  "underscore": ["lodash"],
  "queryJ": [],
  "lodash": []
}
dependencies.json

{
  "projectName": "Test0000",
  "dependencies": ["backbone"]
}
我正在尝试实现一个简单的命令行工具,该工具读取dependencies.json文件,并输出其他应该安装的内容,以便一切正常工作

可能已经安装了包,这些包将位于名为installed_modules的文件夹中,其中每个依赖项都是一个单独的文件夹,该文件夹的名称是包的名称。 该工具应读取dependencies.json和所有_packages.json,并输出将要安装的以下库:

例如:

Installing backbone.
In order to install backbone, we need jQuery and underscore.
Installing jQuery.
In order to install jQuery, we need queryJ.
Installing queryJ.
Installing underscore.
In order to install underscore, we need lodash. Lodash is already installed.
All done.
程序结束后,文件夹结构应如下所示

installed_modules/
├── backbone
├── jQuery
├── lodash
├── queryJ
└── underscore
我试着用递归来实现这一切,没有硬编码的值,但是没有运气


编辑

@威廉·莫里森

JSONParser parser = new JSONParser();

        try {
            Object obj = parser.parse(new FileReader(".../dependencyResolving/dependencies.json"));
            JSONObject dependencies = (JSONObject) obj;

            Object obj1 = parser.parse(new FileReader("../dependencyResolving/all_packages.json"));
            JSONObject allPacks = (JSONObject) obj1;

            JSONArray deps = (JSONArray) dependencies.get("dependencies");
            Iterator<String> iterator = deps.iterator();
            while (iterator.hasNext()) {
                System.out.println("Installing " + iterator.next() + ".");
            }

            //Here i do not know how to check in all_packages which are                                   
            //dependencies and i can not create the folders.
        } catch (Exception e) {
        }
JSONParser=newjsonparser();
试一试{
Object obj=parser.parse(新文件读取器(“…/dependencyResolving/Dependency.json”);
JSONObject依赖项=(JSONObject)obj;
Object obj1=parser.parse(新文件读取器(“../dependencyResolving/all_packages.json”);
JSONObject allPacks=(JSONObject)obj1;
JSONArray deps=(JSONArray)dependencies.get(“dependencies”);
迭代器迭代器=deps.Iterator();
while(iterator.hasNext()){
System.out.println(“安装”+iterator.next()+”);
}
//在这里,我不知道如何签入所有
//依赖项和我无法创建文件夹。
}捕获(例外e){
}

首先从完整的json结构构建图形数据结构。在此图中,将没有依赖项的项表示为叶子。构建图后,处理每个项,遍历依赖关系图,深度优先,离开,然后在递归展开时安装每个项。@Gaël我无法进行良好的递归调用。我使用硬编码的值创建一些文件夹,但这不是一个好方法,这就是我在这里问的原因。你能发布你到目前为止的尝试吗?@William Morrison我将发布一些代码作为答案。有人会帮助我吗?我已经有一段时间不能解决这个问题了:(