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

{"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中,只保存循环的最后一次迭代.

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

Example:

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

Json相关问答推荐

输入请求中不存在null的条件抖动

使用更高级别架构中的字段值在$def内实现约束

在linux控制台中解析json字符串的最简单方法是什么?

将boost::beast::multibuffer转换为std::istream

JSON 的自定义编组器,可以是字符串或 map[string]string / map[string]bool

使用 REACT 从字段值中读取 JSON 元素

在Flutter 中将 map 的 Json 转换为 list

ORA-01422: 精确提取返回的行数超过了与 json 对象组合的请求数

PowerShell - JSON/PsCustomObject - 为什么我的数组被扁平化为一个对象?

使用 @ResponseBody 自定义 HttpMessageConverter 来做 Json 事情

反序列化大型 json 对象的 JsonMaxLength 异常

如何在不消除对象歧义的情况下使用 circe 解码 ADT

C#扁平化json struct

错误未判断调用put(K, V)作为原始类型java.util.HashMap的成员

使用 Python 3 读取 JSON 文件

如何判断 JSON 响应元素是否为数组?

[__NSCFNumber 长度]:发送到实例 UITableView 的无法识别的 Select 器

在 JSON.NET 中序列化派生类时的字段顺序

Python 到 JSON 序列化在十进制上失败

按键值过滤 JSON