Загрузка файлов JSON - PullRequest
       7

Загрузка файлов JSON

0 голосов
/ 05 мая 2018

Я занимаюсь разработкой Java-проекта с использованием IntelliJ и Maven, но у меня возникают проблемы с загрузкой и анализом файлов Json. Я использую Gson для разбора.

Это фрагмент кода, который вызывает проблемы:

 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);
}   

A FileNotFoundException получает бросок в try(Reader file = new FileReader("dir/myFile.json")).

Если мои предположения верны, программа даже не доходит до разбора, потому что не может найти файл.

То, что я пытался:

  1. Использование абсолютного пути (и небольшие вариации относительного, такие как src/main/resources/dir/myFile.json и resources/dir/myFile.json ...).
  2. Установка корневого ресурса для обоих intelliJ и Maven.
  3. Использование других способов чтения файла, таких как:
    • ClassLoader
      String fileName = "dir/myFile.json"; ClassLoader classLoader = ClassLoader.getSystemClassLoader(); File file = new File(classLoader.getResource(fileName).getFile());
    • InputStreamReader (я получаю NullPointerException таким образом)
      try(Reader reader = new InputStreamReader(myClass.class.getResourceAsStream("dir/myFile.json"))){...}

У вас есть идея, почему файл не может быть найден? Есть ли другие способы, с помощью которых я могу загрузить его?

1 Ответ

0 голосов
/ 05 мая 2018

Я полагаю, что в случае InteliJ, Reader начинает поиск файлов в корне проекта, так что-то вроде этого: ./path/to/file/dir/MyFile.json.
./ делает так, что начинает смотреть на корневую папку вашего проекта. на /IdeaProjects/MyProject он в этом случае будет начинаться с папки MyProject.

Аналогичная проблема

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...