你好,提前致谢。我在这里相对较新,到目前为止我已经能够解决我在搜索中遇到的任何问题,但这个问题让我很难过。我正在编写一个程序,该程序使用 Rest-Assured 进行 API 调用以获取云服务器中不同对象的配置文件。这些对象是我们可以称为文件夹的组织文件容器。这些文件夹具有特定的结构,每个文件夹都有特定的元数据配置文件。我的程序所做的是从返回的 JSON 创建 java 对象,并以允许它们仍然像文件夹结构一样工作的方式存储它们,以便可以操纵它们来执行以下操作:打印文件夹结构,获取特定文件夹的子文件夹文件夹、查看特定文件夹的名称或 ID、添加或删除文件夹等。我已将其设置为每个文件夹都是一个对象,其中包含其子文件夹的 ArrayList 和元数据变量,其中构造函数将基于 JSON 填充所有变量。在使用我的递归方法调用 API 并在它们应该去的地方添加子文件夹之后,在类内部的方法中,我可以看到它们被正确添加,一旦方法退出,如果我尝试从 Main 访问列表我得到一个空指针异常。请参阅下面的代码示例。编辑:我在下面的代码中添加了额外的测试,以检查递归方法中的数组索引是否为空。创建对象时,构造函数使用 打印文件夹 ID 和 ArrayList 中的索引indexOf()。当它从构造函数返回时,在相同的递归方法中,getSingleFolder(index).getSubfolders().get(0).getSubfolders().get(0).toString仍然为空,即使这应该返回刚创建并从构造函数中添加到父文件夹 ArrayList(并验证)的同一文件夹。 public void saveSubfoldersRecursively(Folder folder){ if (folder.hasSubfolders()){ getFolderSubfoldersJsonArrayFromRestApi(folder); for(int x = 0; x < folder.getFoldersJsonArray().size(); x++) { JsonObject currentSubfolderJson = folder.getFoldersJsonArray().get(x).getAsJsonObject(); JsonObject fullSubfolderProfileObject = getFolderProfileFromRestApi(currentSubfolderJson); Folder newSubfolder = folder.addSubfolder(fullSubfolderProfileObject); if (newSubfolder.hasSubfolders()) { saveSubfoldersRecursively(newSubfolder); } } if (folder.getId().equals("<folderID>") ) { System.out.println("inside saveSubfoldersRecursively"); // this prints fine// Null Pointer Exception at next line! System.out.println("access test 1: " + folder.getId() + " subfolder at index 0: " + folder.getSubFolders().get(0)); } }
添加回答
举报
0/150
提交
取消