Получить Json файл из папки ресурсов - PullRequest
0 голосов
/ 25 февраля 2020

в настоящее время я учу Maven. У меня проблема с чтением файла json из папки ресурсов в моем приложении. У меня есть сообщение об ошибке «Система не может найти этот файл». Что еще интереснее, нет проблем, когда я пытаюсь прочитать текстовый файл ...

Как вы можете видеть на изображении ниже, эти два файла находятся в одном и том же месте в моем приложении. Почему мой json файл не читается правильно?

enter image description here

        //WORKING
        String filename = "./resources/data/init_data.txt";
        try (Stream<String> lines = Files.lines(Paths.get(filename))){
            lines.forEach(System.out::println);
        } catch (Exception e){
            e.printStackTrace();
        }

        //NOT WORKING
        Gson gson = new Gson();
        filename = "./resources/data/car.json";
        try (Reader reader = new FileReader(filename)){
            Car car3 = gson.fromJson(reader,Car.class);
            System.out.println(car3);
        } catch (IOException e){
            e.printStackTrace();
        }

enter image description here

1 Ответ

0 голосов
/ 26 февраля 2020

Вы можете использовать getResourceAsStream() для чтения файлов ресурсов.

Пример:

import java.io.Reader;
import java.io.IOException;
import java.io.InputStreamReader;
import com.google.gson.Gson;

...

public void getJson() {        
    try (Reader reader = new InputStreamReader(this.getClass()
            .getResourceAsStream("/foo.json"))) {
        MyResult result = new Gson().fromJson(reader, MyResult.class);
        System.out.println(result.getBar());  // prints "bat"
    } catch (IOException e) {
        e.printStackTrace();
    }
}

Предполагается, что foo.json равно

{"bar": "bat"}

и MyResult это:

public class MyResult {

    private String bar;

    public String getBar() {
        return bar;
    }

    public void setBar(String bar) {
        this.bar = bar;
    }

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