如何用Java将对象写入JSON文件?

问题描述 投票:0回答:1

我正在创建一个程序,需要将对象保存(写入)到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();
}

当我运行程序时,出现错误:

类object3声明了多个名为state的JSON字段

我正尝试写入JSON的对象具有ID,以及另一个对象的数组(object2),并且每个这些对象都具有另一个对象的数组(object3)。 object3有多个字段,主要是字符串。对我来说,将这样的对象写入JSON文件,然后能够将其读回我的程序的最简单方法是什么?

java json object gson filewriter
1个回答
0
投票

如果只想以JSON格式序列化和反序列化对象状态,而又不太在乎JSON的确切形状,则XStream使此操作非常容易。它最初旨在序列化为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));

产品:

{“产品”:{“名称”:“香蕉”,“ id”:123,“价格”:23.0}}]

要读回:

XStream xstream = new XStream(new JettisonMappedXmlDriver());
xstream.alias("product", Product.class);
Product product = (Product) xstream.fromXML(json);
System.out.println(product.getName());

打印:

香蕉

© www.soinside.com 2019 - 2024. All rights reserved.