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

标签 java json object gson filewriter

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

相关文章:

javascript - 数组不会通过ajax传递

java - 使用相同的 java 类(冒泡排序)对整数和字符串进行排序

java - 如何使用 FIX 协议(protocol)在 Java 中有效地解析重复组?

json - Elm - 如何将对象的 json 列表解码为 Dict

尽管为 JSON 设置了 var,但 Javascript requestData 未定义

json - 使用 jq 就地修改 json 中的键值

Python 将函数传递给对象

r - 扩展 R S4 对象以具有新插槽并保持原始对象以相同方式工作

Javafx 在 TableView 中添加图像

java - 通过命令提示符编译 .java