Я хочу иметь возможность развернуть приложение весенней загрузки онлайн на heroku. Мое приложение загружает данные из статического файла .json, который находится в моей папке ресурсов.

enter image description here

Пока я пробовал этот код, но он не работает. По какой-то причине я не могу прочитать данные из json файла.

    public List<Category> getAllCategories() throws FileNotFoundException
    {
       Gson gson = new Gson();
       ClassLoader classLoader = getClass().getClassLoader();
       File file = new File(classLoader.getResource("static/data/data.json").getFile());
       JsonReader reader = new JsonReader(new FileReader(file.getPath()));
       List<Category> allCategories = gson.fromJson(reader, new TypeToken<List<Category>>(){}.getType());

       return allCategories;
    }
0
tony 23 Сен 2018 в 15:33

2 ответа

Лучший ответ

Поскольку data.json перемещается в JAR, который развернут на heroku, попробуйте использовать getResourceAsStream(path) вместо getResource(). псевдокод может быть,

Gson gson = new Gson();
ClassLoader classLoader = getClass().getClassLoader();
InputStream in = classLoader.getResourceAsStream("static/data/data.json");
JsonReader reader = new JsonReader(new InputStreamReader(in));
List<Category> allCategories = gson.fromJson(reader, new TypeToken<List<Category>>(){}.getType());
1
benjamin c 24 Сен 2018 в 05:09

Можете ли вы переместить папку данных непосредственно под ресурсами, так как путь к статическим ресурсам может быть здесь конфликтующим, и использование ниже должно работать.

File file = new File(classLoader.getResource("data/data.json").getFile());
0
kj007 23 Сен 2018 в 13:06