Почему эта функция gson сохраняет пустой файл? - PullRequest
1 голос
/ 29 марта 2019

Я пытаюсь создать приложение Java, и у меня есть вопрос, касающийся функции внутри API gson.Почему эта строка кода генерирует пустой файл json без каких-либо ошибок?

Пример объекта, который воспроизводит эту проблему:

public class Employee {

    private String name;
    private String occupation;

    public Employee(String name, String occupation) {
        super();
        this.name = name;
        this.occupation = occupation;
    }

    public String getName() {
        return name;
    }

    public String getDescription() {
        return description;
    }

}
//this refers to a simple java object that works with gson
gson.toJson(this, new FileWriter(new File("somefile.json")));

1 Ответ

2 голосов
/ 29 марта 2019

Я пытался использовать объект HashMap, поскольку у OP не было объекта Java, но он должен нормально работать с любым другим типом объекта Java.
все работает нормально, проблема была с автором, вам нужно очистить содержимое и закрыть поток.

        Map<String, String> map = new HashMap<>();
        map.put("a","b");
        map.put("c","d");
        Gson gson = new Gson();
        FileWriter writer = new FileWriter(new File("somefile.json"));
        gson.toJson(map, writer);
        writer.flush();
        writer.close();

Содержимое файла:

{"a":"b","c":"d"}

Над кодом можно записать

try(FileWriter writer = new FileWriter(new File("somefile.json"))) {
    gson.toJson(map, writer);
    writer.flush();
}

Здесь вам не нужно явно закрывать поток, этот стиль кода предпочтительнее первого и избегает подобных ошибок в будущем.

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