一尘不染

如何使用gson将数据保存在json文件中?

java

在我的Web应用程序中,我成功使用mybatis在html表中显示了数据。现在,我想将Mysql表的记录保存在一个json文件中并创建一个用户数组,我使用了Gson,问题是文件中只保存了一条记录。谢谢。
结果file.json如下:

{"data":
 [
 {"id":2,"Name":"Mike"}
 ]
}

servlet.java

SqlSession session = MyBatisSqlSessionFactory.getSession();
List<User> users = session.selectList("dao.UserDao.findAll");
for (User u : users) {
    Gson gson = new Gson();
    try {
        JsonWriter  writer = new JsonWriter(new FileWriter("C:\\file.json"));
        writer.beginObject();
        writer.name("data");
        writer.beginArray();
        writer.beginObject();
        writer.name("id").value(t.getId());
        writer.name("name").value(t.getNom());
        writer.endObject();
        writer.endArray();
        writer.endObject();
        writer.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

session.close();

阅读 831

收藏
2020-12-03

共1个答案

一尘不染

您将所有用户写入同一文件,C:\\file.json因此只保存了循环的最后一次迭代。

您可以将对象List<User>转换为json并写入一次(无需循环)

例:

try (Writer writer = new FileWriter("Output.json")) {
    Gson gson = new GsonBuilder().create();
    gson.toJson(users, writer);
}
2020-12-03