You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Java中的Google GSON库合并两个JSON文件

Java使用Google Gson合并两个JSON数组文件教程

前置准备

  • 确保项目已引入Gson库,Maven项目可直接在pom.xml中添加如下依赖:
<dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>2.10.1</version> <!-- 可替换为最新稳定版本 -->
</dependency>

实现步骤

1. 定义和JSON字段匹配的实体类

Gson反序列化需要和JSON结构对应的实体类,这里JSON数组的元素包含name、age、city三个字段,对应实体类如下:

public class User {
    private String name;
    private Integer age;
    private String city;

    // Gson反序列化必须保留无参构造方法
    public User() {}

    // 以下为Getter和Setter方法
    public String getName() { return name; }
    public void setName(String name) { this.name = name; }
    public Integer getAge() { return age; }
    public void setAge(Integer age) { this.age = age; }
    public String getCity() { return city; }
    public void setCity(String city) { this.city = city; }
}

2. 编写合并逻辑核心代码

import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.lang.reflect.Type;
import java.util.List;

public class MergeJsonDemo {
    public static void main(String[] args) {
        Gson gson = new Gson();
        // 定义List<User>的类型,用于Gson反序列化识别泛型
        Type userListType = new TypeToken<List<User>>(){}.getType();

        try (
            // 读取两个源JSON文件
            FileReader file1Reader = new FileReader("file1.json");
            FileReader file2Reader = new FileReader("file2.json");
            // 定义合并后文件的输出流
            FileWriter mergedWriter = new FileWriter("merged.json")
        ) {
            // 将两个JSON文件反序列化为List集合
            List<User> list1 = gson.fromJson(file1Reader, userListType);
            List<User> list2 = gson.fromJson(file2Reader, userListType);

            // 合并两个集合
            list1.addAll(list2);

            // 若需要去重可在此处添加逻辑,比如按用户名去重,需要先给User类重写equals和hashCode方法
            // list1 = list1.stream().distinct().toList();

            // 序列化合并后的集合为JSON,写入文件,setPrettyPrinting为格式化输出,不需要可删除
            gson.newBuilder().setPrettyPrinting().create().toJson(list1, mergedWriter);
            System.out.println("合并完成,已生成merged.json文件");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

注意事项

  • 代码使用了try-with-resources语法,会自动关闭流资源,无需手动释放
  • 如果你的JSON根结构不是数组而是普通对象,需要调整反序列化的目标类型,不要直接使用List
  • 上述代码默认保留所有元素,有过滤、去重需求可自行在合并后添加对应逻辑

内容的提问来源于stack exchange,提问作者Huidrom Punendrajit Singh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 20:06:03