java - 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' 合并到一个文件中?
解决方案
我假设您需要的输出是一个包含单个对象数组的新文件。
以下是实现该目标所需的代码:
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"}]
推荐阅读
- javascript - Model.findOneAndRemove (MongoDB & Mongoose) 的特异性?
- php - PHP类字段是一样的
- aspnetboilerplate - 如何部署使用数据库的 Web 应用程序
- typescript - ts-mockito - 当参数是自定义对象时,存根方法不起作用
- bash - 子shell执行带有参数的命令的奇怪行为
- android - 自定义底页对话框的视图
- arrays - Swift:从按高度比较的对象数组中获取最大的 CGSize
- javascript - 在 JavaScript 中使用 SQL 异步调用之外的变量?
- java - 我的应用程序仅在 One plus 设备上无法访问 Internet
- javascript - JS FileReader ArrayBuffer to Byte[] 传递文件内容