在我的Web应用程序中,我成功使用mybatis在html表中显示了数据。现在,我想将Mysql表的记录保存在一个json文件中并创建一个用户数组,我使用了Gson,问题是文件中只保存了一条记录。谢谢。 结果file.json如下:
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();
您将所有用户写入同一文件,C:\\file.json因此只保存了循环的最后一次迭代。
C:\\file.json
您可以将对象List<User>转换为json并写入一次(无需循环)
List<User>
例:
try (Writer writer = new FileWriter("Output.json")) { Gson gson = new GsonBuilder().create(); gson.toJson(users, writer); }