java - 如何将文件夹和子文件夹列表转换为 JSOn 格式

标签 java json

我想在 KendoDrop Down 上使用子文件夹名称填充文件夹名称。所以我想以 JSOn 格式转换文件夹目录我该怎么做?

public class FolderPath {

    public static void main(String[] args) throws IOException {
        File currentDir = new File("Folder URL "); // current directory
        displayDirectoryContents(currentDir);

    }
    public static void displayDirectoryContents(File dir) {

        StringBuilder sb1 = new StringBuilder("[");
        try {

            File[] files = dir.listFiles();

            for (File file : files) {
                if (file.isDirectory()) {
                    sb1 = sb1.append("{\"JSONKEY\":\"" + file.getCanonicalPath() + "\"},");
                    String str = file.getCanonicalPath();
                    displayDirectoryContents(file);

                } else {
                }

            }
            sb1.deleteCharAt(sb1.length() - 1);
            sb1 = sb1.append("]");
            System.out.println("s2==>" + sb1);

        } catch (IOException e) {
            e.printStackTrace();
        }   
    }
}

这里我没有将完整的 Directroy 导入 JSOn 请帮助

最佳答案

您将在每次迭代中创建一个 StringBuilder 对象。这就是为什么您的串联不起作用。

考虑一下 C:\test 的内容由 3 个目录组成:

c:\test
  |
  +--css
  |   +--less
  +--js

下面的代码,返回:

 [{"JSONKEY":"C:\test\css"},
  {"JSONKEY":"C:\test\css\less"},
  {"JSONKEY":"C:\test\js"}]


import java.io.File;
import java.io.FileFilter;
import java.io.IOException;

public class FolderPath {

    private static FileFilter onlyDirectories = new FileFilter() {
        @Override
        public boolean accept(File file) {
            return file.isDirectory();
        }
    };

    public static void main(String[] args) {
        File currentDir = new File("C:\\test"); // current directory
        displayDirectoryContents(currentDir);
    }

    public static void displayDirectoryContents(File dir) {
        StringBuilder sb1 = new StringBuilder("[");
        doDisplayDirectoryContents(dir, sb1);
        if (sb1.length() > 1) {
            sb1.deleteCharAt(sb1.length() - 1);
        }
        sb1.append("]");
        System.out.println(sb1);
    }

    private static void doDisplayDirectoryContents(File dir, StringBuilder sb1) {
        File[] files = dir.listFiles(onlyDirectories);

        if (files != null) {
            for (File file : files) {
                try {
                    sb1.append("{\"JSONKEY\":\"" + file.getCanonicalPath() + "\"},");
                    doDisplayDirectoryContents(file, sb1);
                } catch (IOException e) {
                    e.printStackTrace();
                }   
            }
        }
    }
}

关于java - 如何将文件夹和子文件夹列表转换为 JSOn 格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31025655/

相关文章:

java - 在 java String.format 中转义格式化字符

java - 如果我有 IP,则跳过 Java 的 DNS 查询

javascript - highchart json 数据点

java - 如何使用java递归获取JSON的键?

javascript - 如何在 Javascript 的开发人员工具控制台上打印对象

java - Google Protocol Buffers,如何处理多种消息类型?

java - 用JPA重置MySql数据库的自增值

java - 对象输入流 : StreamCorruptedException

java - 如何为键可变的 JSON 字符串创建 java 类?

json - JSON 文件中的 "NA"转换为 NA 逻辑