我在这方面不是很有经验所以需要帮助。我需要做以下事情:
1.想要遍历内容管理存储库中的文件夹结构
2.想以子节点形式创建文件夹的JSON对象
3. Json数据将用于使用jQuery创建树
Json格式:
var data = [
{
text: "Parent 1",
nodes: [
{
text: "Child 1",
nodes: [
{
text: "Grandchild 1"
},
{
text: "Grandchild 2"
}
]
},
{
text: "Child 2"
}
]
},
{
text: "Parent 2"
},
{
text: "Parent 3"
},
{
text: "Parent 4"
},
{
text: "Parent 5"
}
];
我的Java方法是这样的:
public static void displayIt(File node){
System.out.println(node.getAbsoluteFile());
if(node.isDirectory()){
String[] subNote = node.list();
for(String filename : subNote){
displayIt(new File(node, filename));
}
}
}
我正在努力构建策略来创建JSON对象,使用Array来描述这个。
请你能帮助我。
答案 0 :(得分:1)
如果要使用递归从内容管理存储库读取所有文件或文件夹,请使用以下函数:
public static MyFolder readFiles(File file,List<MyFolder> myfolder,MyFolder childObj)
{
try
{
List<MyFolder> childArray = new ArrayList<MyFolder>();
if(file.isDirectory())
{
File[] file_array = file.listFiles();
if(file_array.length == 0 ){
childObj.text = file.getAbsolutePath();
myfolder.add(childObj);
childObj = new MyFolder();
}else{
childObj.text = file.getAbsolutePath();
childArray = childObj.nodes;
if(childArray == null)
childArray = new ArrayList<MyFolder>();
}
for(File tempFile : file_array)
{
if(tempFile.isDirectory())
{
childObj = readFiles(tempFile,myfolder,childObj);
if(childObj.text != null)
myfolder.add(childObj);
childObj = new MyFolder();
}
else
{
MyFolder obj = new MyFolder();
obj.text = tempFile.getAbsolutePath();
childArray.add(obj);
}
}
childObj.nodes = childArray;
}
else
{
childObj.text = file.getAbsolutePath();
myfolder.add(childObj);
childObj = new MyFolder();
}
}
catch(Exception ex)
{
ex.printStackTrace();
}
return childObj;
}
MyFolder课程:
class MyFolder
{
String text;
List<MyFolder> nodes;
}
您需要一些JSON实用程序或API将您的类转换为json字符串。我使用GSON google API将List<MyFolder>
转换为JSON字符串。
以下是我要测试的测试类:
List<MyFolder> myFolder = new ArrayList<MyFolder>();
File file = new File("D:/test");
MyFolder childArray = new MyFolder();
readFiles(file,myFolder,childArray);
Gson json = new Gson();
System.out.println(json.toJson(myFolder));
输出是:
[
{
"text": "D:\\test\\test1\\test12",
"nodes": [
{
"text": "D:\\test\\test1\\test12\\test12.txt"
},
{
"text": "D:\\test\\test1\\test12\\test12_2.txt"
}
]
},
{
"text": "D:\\test\\test2"
},
{
"text": "D:\\test\\test3"
}
]
剩下的最后一件事就是将其传递给客户端并处理JSON以生成树结构。 愿这对你有所帮助。
答案 1 :(得分:0)
JAVA中有一种方法可以从不同的集合类型生成JSON对象--Flexjson。 Here您可以找到有关Flexjson的最重要信息。简而言之,命令如下所示:
String jsonString = new flexjson.JSONSerializer().deepSerialize(myCollection);
Jquery完全理解生成的JSON对象,您可以像这样轻松访问JQuery中的内容:
jsonString["column1"]
因此,您只需将数据保存在适合您情况的Arra / Map / whatewer中,然后转换为JSON。
希望它有所帮助,每次我需要一个JSON字符串时,我都会使用这种方法,并且对我来说非常适合。