Java-如何将复杂对象(不可序列化)保存到文件中?
我正在尝试将以下对象保存到文件中,以供以后使用:Java-如何将复杂对象(不可序列化)保存到文件中?,java,serialization,jaxb,Java,Serialization,Jaxb,我正在尝试将以下对象保存到文件中,以供以后使用: public class Templates implements Serializable { private List<ReportTemplate> sources; private List<ReportTemplate> destinations; public List<ReportTemplate> getSources() { return sourc
public class Templates implements Serializable {
private List<ReportTemplate> sources;
private List<ReportTemplate> destinations;
public List<ReportTemplate> getSources() {
return sources;
}
public void setSources(List<ReportTemplate> sources) {
this.sources = sources;
}
public List<ReportTemplate> getDestinations() {
return destinations;
}
public void setDestinations(List<ReportTemplate> destinations) {
this.destinations = destinations;
}
}
出于某种原因,输出Json添加了“helper”和“observable”键,仅在实际应用程序中,而不是在测试中
Templates
对象包含ReportTemplate
对象的ArrayLists
,但没有可观察的内容
测试中的对象和我的应用程序中的对象是相同的,所以我不知道为什么它会变得混乱。使用Gson()
方法将Java对象转换为JSON字符串。您可以将json字符串保存到xml中
序列化:
Gson gson=new Gson();
String templateJson=gson.toJson(templateObj);
String templateJson="{.....}"
Templates template = gson.fromJson(templateJson, Templates.class);
反序列化:
Gson gson=new Gson();
String templateJson=gson.toJson(templateObj);
String templateJson="{.....}"
Templates template = gson.fromJson(templateJson, Templates.class);
自从看到您的答案后,我一直在尝试使用Gson,但只取得了很小的成功。
toJson()
和fromJson()
在一个简单的测试中运行良好,但是在我的实际应用程序中,toJson()
向输出添加了“helper”和“observable”键。当再次尝试加载该文件时,这会导致异常,因为它试图实例化'com.sun.javafx.binding.ExpressionHelper',这是一个抽象类。@Zephyr,你找到解决方案了吗?我几乎是在同一条船上。@A.J.-不,我没有;最终使用了一种完全不同的方法。