我正在尝试创建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")));
答案 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();
}
这里您不需要显式关闭流,此代码样式优于第一个,并且避免了以后出现任何此类错误。