@DeNissss4444

Как сделать что бы добавлялась информация в JSON файл а не удалялась старая и записывалась новая?

У меня есть утилитный метод который записывает информацию в JSON из модели.
public static void convertModelToJson(Object className, String titleFile) {
        ObjectMapper mapper = new ObjectMapper();
        mapper.enable(SerializationFeature.INDENT_OUTPUT);
        try {
            mapper.writeValue(new File(baseFile + titleFile), className);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }


есть метод где я обращаюсь к этому статическому методу
public void saveСharacteristicsСar(){
        Car car = scenarioContext.get("car");
        trimDetailsPage.clickInformationButton();
        car.setEngineInfo(trimDetailsPage.getEngineInfoText());
        car.setSeatingCount(trimDetailsPage.getSeatingInfoText());
        car.setStyleInfo(trimDetailsPage.getStyleInfo());
        car.setTransmissionInfo(trimDetailsPage.getTransmissionInfoText());

        JsonUtils.convertModelToJson(car,titleModelClass);
    }


Проблема в том что я вызываю метод saveСharacteristicsСar() несколько раз и пытаюсь добавить в JSON файл разные модели автомобилей, но место этого у меня удаляется предыдущая модель автомобиля и записывается новая. Как сделать так что бы у меня не удалялась предыдущая модель а просто к ней добавлялась новая?
  • Вопрос задан
  • 160 просмотров
Решения вопроса 1
zagayevskiy
@zagayevskiy Куратор тега Java
Android developer at Yandex
Json устроен так, что ты не можешь просто взять и записать в конец/начало дополнительные данные. Тебе нужно читать файл, парсить его, в нужное место в структуре Json вставлять свои новые данные, и писать всё вместе обратно в файл.

Звучит как говно, и так оно и есть. Возьми простейшую БД, например SQLite, и пиши туда.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@WaterSmith
Android-разработчик. Java, Kotlin
У меня есть утилитный метод который записывает информацию в JSON из модели.
public static void convertModelToJson(Object className, String titleFile) {
        ObjectMapper mapper = new ObjectMapper();
        mapper.enable(SerializationFeature.INDENT_OUTPUT);
        try {
            mapper.writeValue(new File(baseFile + titleFile), className);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }


При каждом вызове этого метода создается новый файл и записывается вместо предыдущего, как можно было ожидать, что оно будет добавлять данные в конец? Ну да ладно, это вопрос риторический.
Я бы посоветовал заполять JSON в процессе работы, а сохранять его уже когда работа будет закончена.
Если нужно дополнять файл между сеансами работы с программой - открывайте и парсите его при старте.
И да, если вам правда нужно будет работать с одним файлом в разных сеансах, то подумайте про БД, как вам посоветовал Денис Загаевский
Ответ написан
Комментировать
den_rad
@den_rad
PHP разработчик
Есть формат JSON Lines, файл у которого каждая строка - JSON. Может быть он вам подойдет.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы