如何通过GSON向JSON数组添加元素并保存到文件?
实现方法
你已经搞定了JSON文件读取的核心步骤,接下来只需要完成元素添加和文件回写这两步就能达成需求啦,具体实现如下:
完整代码示例
import com.google.gson.Gson; import com.google.gson.GsonBuilder; import java.io.FileReader; import java.io.FileWriter; import java.io.Reader; import java.io.Writer; import java.util.ArrayList; import java.util.List; public class JsonUpdateDemo { public static void main(String[] args) { // 可选:用GsonBuilder创建带格式化的实例,输出的JSON更易读;不需要的话直接用new Gson()即可 Gson gson = new GsonBuilder().setPrettyPrinting().create(); try (Reader reader = new FileReader("D:\\file.json")) { // 读取JSON文件映射到Test实体类对象 Test test = gson.fromJson(reader, Test.class); // 先处理tests列表的空指针问题:如果原JSON里tests是null,先初始化一个空列表 List<String> testsList = test.getTests(); if (testsList == null) { testsList = new ArrayList<>(); test.setTests(testsList); } // 向tests数组添加新元素"pinapple" testsList.add("pinapple"); // 将更新后的对象写回原JSON文件 try (Writer writer = new FileWriter("D:\\file.json")) { gson.toJson(test, writer); } System.out.println("JSON文件更新完成!"); } catch (Exception e) { e.printStackTrace(); } } } // 你的Test实体类(确保Getter/Setter已正确实现) class Test { private String name; private List<String> tests; // Getter方法 public String getName() { return name; } public List<String> getTests() { return tests; } // Setter方法 public void setName(String name) { this.name = name; } public void setTests(List<String> tests) { this.tests = tests; } }
关键细节说明
- 空指针防护:提前判断
tests列表是否为null,避免原JSON中tests字段缺失时调用add()方法抛出异常 - 元素添加:直接调用List的
add()方法,就能把新元素追加到数组末尾 - 文件回写:用
Gson.toJson()将更新后的实体对象重新序列化为JSON,再通过FileWriter写入原文件(如果需要保留原文件备份,可以先写入新文件再替换原文件)
内容的提问来源于stack exchange,提问作者M. Barabas
相关产品推荐
相关产品推荐

