@turdubekov
Студент

Разумно ли считать 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();
        }
}


json файл:
{
  "movies": [
    {
      "name": "Good omens",
      "year": 2019,
      "description": "TV Series",
      "director": {
        "fullName": "Douglas Mackinnon"
      },
      "cast": [
        {
          "fullName": "Michael Sheen",
          "role": "Aziraphale"
        },
        {
          "fullName": "David Tennant",
          "role": "Crowley"
        }
      ]
    },
  • Вопрос задан
  • 387 просмотров
Пригласить эксперта
Ответы на вопрос 2
azerphoenix
@azerphoenix Куратор тега Java
Java Software Engineer
Здравствуйте!
Вопрос: Это тупое решение? если да, то как правильно решить данную задачу?

Скорее вы пошли ооочень длинным путем.
Вот, структура вашего json.
{
  "movies": [
    {
      "name": "Good omens",
      "year": 2019,
      "description": "TV Series",
      "director": {
        "fullName": "Douglas Mackinnon"
      },
      "cast": [
        {
          "fullName": "Michael Sheen",
          "role": "Aziraphale"
        },
        {
          "fullName": "David Tennant",
          "role": "Crowley"
        }
      ]
    }
  ]
}

Лучше считайте его сразу в список объектов
Можете замаппить json в объект используя этот сайт - www.jsonschema2pojo.org
Получится примерно следующее:
-----------------------------------com.example.Example.java-----------------------------------


public class Example {

@SerializedName("movies")
@Expose
public List<Movie> movies = null;

}

-----------------------------------com.example.Movie.java-----------------------------------

public class Movie {

@SerializedName("name")
@Expose
public String name;
@SerializedName("year")
@Expose
public Integer year;
@SerializedName("description")
@Expose
public String description;
@SerializedName("director")
@Expose
public Director director;
@SerializedName("cast")
@Expose
public List<Cast> cast = null;

}

-----------------------------------com.example.Director.java-----------------------------------


public class Director {

@SerializedName("fullName")
@Expose
public String fullName;

}
-----------------------------------com.example.Cast.java-----------------------------------

public class Cast {

@SerializedName("fullName")
@Expose
public String fullName;
@SerializedName("role")
@Expose
public String role;

}

Прочитайте например, эту статью как прочитать json в объект
https://mkyong.com/java/how-to-parse-json-with-gson/
Ответ написан
Комментировать
xez
@xez Куратор тега Java
TL Junior Roo
Это тупое решение?

Не самое оптимальное. И не объекто-ориентированное.

Вам нужно:
1. Создать модель по вашему json файлу.
2. Перегнать, с помощью gson, например, файл в эту модель. Должен получиться какой-то список из movie.
3. Выполнить действия с этим списком. Отличный случай разобраться со Stream API.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы