为什么此gson函数保存空白文件?

时间:2019-03-29 04:53:09

标签: java gson

我正在尝试创建Java应用程序,但对gson API中的函数有疑问。为什么这行代码生成一个空的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 个答案:

答案 0 :(得分:2)

我尝试使用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();
}

这里您不需要显式关闭流,此代码样式优于第一个,并且避免了以后出现任何此类错误。