首页 > 解决方案 > java - 如何在java中使用google GSON合并两个json文件?

问题描述

这是file1.json

 [
{
"name": "Leonard",
"age": 28,
"city": "Pasadena"
},
{
"name": "joey",
"age": 29,
"city": "NewYork"
}]

这是file2.json

 [
{
"name": "Shelly",
"age": 28,
"city": "LA"
},
{
"name": "Chandler",
"age": 29,
"city": "NewYork"
}]

那么,如何使用 java 中的 google GSON 库将这些 'file1.json' 和 'file2.json' 合并到一个文件中?

标签: javajsonmergegson

解决方案


我假设您需要的输出是一个包含单个对象数组的新文件。

以下是实现该目标所需的代码:

Gson gson = new Gson();

JsonReader reader1 = new JsonReader(new FileReader(new File(/path of "file1.json"/)));

List<String> data1 = gson.fromJson(reader1 , List.class);

JsonReader reader2 = new JsonReader(new FileReader(new File(/path of "file2.json"/)));

List<String> data2 = gson.fromJson(reader2, List.class);

data1.addAll(data2);

FileWriter fileWriter = new FileWriter(/path of the output file/);

gson.toJson(data1 , fileWriter);

fileWriter.flush();

fileWriter.close();

JsonReader将 JSON 编码值作为令牌流读取。令牌以深度优先顺序遍历,与它们在 JSON 文档中出现的顺序相同。

fromJson从读取器读取 JSON 值并将其转换为第二个参数中给出的类型,即java.util.List

从两个 JSON 文件中获取列表后,我们使用java.util.List包的addAll方法将它们合并。

我们获取合并的列表并使用toJson将指定的列表序列化为其等效的 JSON 表示。

新文件中的 JSON 如下:

[{"name":"Leonard","age":28.0,"city":"Pasadena"},{"name":"joey","age":29.0,"city":"NewYork"},{"name":"Shelly","age":28.0,"city":"LA"},{"name":"Chandler","age":29.0,"city":"NewYork"}]

推荐阅读