我正在创建一个程序,需要将对象保存(写入)到 JSON,然后将这些对象加载(读取)回程序中。我已经说过 GSON 是做到这一点的好方法。但是,我遇到了一些麻烦。我尝试过以下方法:
Gson g = new Gson();
try (FileWriter writer = new FileWriter(file)) {
String j = g.toJson(board);
writer.write(j);
writer.flush();
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
当我运行该程序时,出现错误:
class object3 declares multiple JSON fields named state
我尝试写入 JSON 的对象有一个 ID 和另一个对象 (object2
) 的数组,并且每个对象都有另一个对象 (object3
) 的数组。 object3
有多个字段,大部分是字符串。将这样的对象写入 JSON 文件,然后能够将其读回我的程序中,最简单的方法是什么?
最佳答案
如果您只是想以 JSON 格式序列化和反序列化对象状态,并且不太关心 JSON 的具体形状,XStream让这变得非常容易。它几乎可以容忍任何 Java 对象结构,并且不像 Gson 那样挑剔。
它最初设计为序列化为 XML,但如果您使用 JettisonMappedXmlDriver
,它将输出 JSON。我发现它是一个编写良好且可靠的库。
Product product = new Product("Banana", "123", 23.00);
XStream xstream = new XStream(new JettisonMappedXmlDriver());
xstream.setMode(XStream.NO_REFERENCES);
xstream.alias("product", Product.class);
System.out.println(xstream.toXML(product));
产品:
{"product":{"name":"Banana","id":123,"price":23.0}}
将其读回:
XStream xstream = new XStream(new JettisonMappedXmlDriver());
xstream.alias("product", Product.class);
Product product = (Product) xstream.fromXML(json);
System.out.println(product.getName());
打印:
Banana
关于java - 如何用 Java 将对象写入 JSON 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59105544/