加载json文件

时间:2018-05-05 17:28:22

标签: java json maven intellij-idea gson

我正在使用IntelliJ和Maven开发一个Java项目,但是我在加载和解析Json文件时遇到了麻烦。我正在使用Gson进行解析。

这是导致问题的代码片段:

threadCount

我正在使用此方法对其进行调试:

 public void parseSomething() {
    Gson gson = new GsonBuilder().create();
    //The Json file contains an array of objects, and I need to put it into a Vector
    Type listType = new TypeToken<List<MyClass>>(){}.getType(); 
    List<MyClass> something = new Vector<>();
    try(Reader file = new FileReader("dir/myFile.json")){
        something = gson.fromJson(file, listType);
    } catch (IOException e) {
        e.printStackTrace();
    }
    this.something = something; //this sets the attribute of the class
}

public static void main( String[] args ) { MyClass myClass = new MyClass(); myClass.parseSomething(); String debug = something.toString(); //I've already implemented a custom toString System.out.println(debug); } FileNotFoundException抛出。

如果我的猜测是正确的,程序甚至无法进行解析,因为它无法找到该文件。

我尝试过的事情:

  1. 使用绝对路径(以及相对的路径的轻微变化,例如try(Reader file = new FileReader("dir/myFile.json"))src/main/resources/dir/myFile.json ...)。
  2. 从intelliJ和Maven设置资源根目录。
  3. 使用其他方式读取文件,例如:
    • 类加载器
      resources/dir/myFile.json
    • InputStreamReader(我以这种方式得到String fileName = "dir/myFile.json"; ClassLoader classLoader = ClassLoader.getSystemClassLoader(); File file = new File(classLoader.getResource(fileName).getFile());
      NullPointerException
  4. 您是否知道无法找到该文件的原因?还有其他方法可以加载它吗?

1 个答案:

答案 0 :(得分:0)

我相信在InteliJ的情况下,Reader开始在项目的根目录中查找文件,所以像这样: ./path/to/file/dir/MyFile.json
./使它开始查看项目的根文件夹。在/IdeaProjects/MyProject,在这种情况下,它将从MyProject文件夹开始。

Similar problem