Разумно ли считать json-файл и присвоить в строку, потом строку в Arraylist?

у меня есть задача:

данные о фильмах хранится в JSON файле ( movies.json ). Вам надо написать программу, которая считает её из файла и сможет выполнять с ней следующие действия:

  • Выводить коллекцию фильмов на экран;
  • Искать и отображать фильмы по полному и частичному совпадению в названии. выпуска фильма по названию по режиссеру

Я решил прочитать json-Файл, потом данные присвоить в Строку, потом Строку в добавить в List, и дальше делать манипуляции описанный в задании.

Вопрос:Это тупое решение? если да, то как правильно решить данную задачу? мой код :

 public class Movies implements Actionable{
Gson gson = new GsonBuilder().setPrettyPrinting().create();
Scanner sc;
private String str;
private List<String> list = new ArrayList<>();
public  void readJson(){
    try {
        FileReader fileReader = new FileReader("movies.json");
         sc = new Scanner(fileReader);
         while (sc.hasNextLine()){
             str += sc.nextLine(); // записать данные из файла в строку str
         }
         fileReader.close();
        sc.close();
        list.add(str); // далее добавить строку в list
    }catch (IOException exception){
        exception.printStackTrace();
    }

}


Ответы (1 шт):

Автор решения: Дмитрий

Напишите такой парсер (я закомментировал интерфейс, потому как в моем примере он не нужен, но вы можете го добавить):

import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.Reader;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.List;

public class MoviesParser<T> {// implements Actionable {

    private final Type type;
    private final Gson gson;

    public MoviesParser(Class<T> clazz) {
        this.gson = new Gson();
        this.type = new TypeToken<ArrayList<T>>() {}.getType();
    }

    public List<T> readJson(String fileName) {
        try (Reader reader = new BufferedReader(new FileReader(fileName))) {
            return gson.fromJson(reader, type);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }
    
}

Предположим, что ваш класс-модель для фильмов называется Movies, тогда чтобы спарсить джейсон нужно сделать так:

public static void main(String[] args) {
    MoviesParser<Movies> parser = new MoviesParser(Movies.class);
    List<Movies> moviesList = parser.readJson("movies.json");
}

После этого вы получите лист с распарсенными даными, делайте с ними что вам нужно

→ Ссылка