深圳网站设计公司哪个好,wordpress仿站博客视频教程,电影网页设计html,海外seo培训文章目录 前言环境准备依赖库 示例代码JSON 数据Java 类定义解析 JSON 数据代码解释 结论 前言
在日常开发中#xff0c;我们经常需要从 JSON 数据中提取特定的信息。本文将介绍如何使用 Java 和 Gson 库解析 JSON 数据#xff0c;并通过流式处理提取特定层级的数据。我们将… 文章目录 前言环境准备依赖库 示例代码JSON 数据Java 类定义解析 JSON 数据代码解释 结论 前言
在日常开发中我们经常需要从 JSON 数据中提取特定的信息。本文将介绍如何使用 Java 和 Gson 库解析 JSON 数据并通过流式处理提取特定层级的数据。我们将以一个具体的例子来说明这一过程。
环境准备
依赖库
本文使用了以下依赖库
Gson: 用于 JSON 解析。Lombok: 用于简化 Java 类的编写。
在 pom.xml 文件中添加以下依赖
dependenciesdependencygroupIdcom.google.code.gson/groupIdartifactIdgson/artifactIdversion2.8.8/version/dependencydependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdversion1.18.20/versionscopeprovided/scope/dependency
/dependencies示例代码
JSON 数据
假设我们有以下 JSON 数据表示多个预算条目及其子条目
[{id: 1309,code: BD000020,level: 1,children: [{id: 1664,code: BD000020001,level: 2,children: [{id: 1665,code: BD000020001001,level: 3}]}]},{id: 1226,code: BD000014,level: 1,children: [{id: 1227,code: BD000014001,level: 2,children: [{id: 1229,code: BD000014001001,level: 3}]},{id: 1228,code: BD000014002,level: 2,children: [{id: 1230,code: BD000014002001,level: 3}]}]}
]Java 类定义
首先我们需要定义一个 Java 类来表示预算条目。这里使用 Lombok 的 Data 注解来简化类的编写。
import lombok.Data;Data
class Budget {private String code;private Integer level;private ListBudget children;
}解析 JSON 数据
接下来我们使用 Gson 库将 JSON 字符串解析为 ListBudget 对象。
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import java.util.List;public class Level {private static String json [...] // 上述 JSON 数据public static void main(String[] args) {// 将 jsonString 转成 ListBudget 对象Gson gson new Gson();ListBudget budgets gson.fromJson(json, new TypeTokenListBudget() {}.getType());System.out.println(budgets);// 通过 stream 获取 budget 中所有 level3 的 codeListString codes budgets.stream().flatMap(budget - getCodesWithLevelThree(budget)).collect(Collectors.toList());System.out.println(codes);}private static StreamString getCodesWithLevelThree(Budget budget) {if (budget.getLevel() 3) {return Stream.of(budget.getCode());} else if (budget.getChildren() ! null) {return budget.getChildren().stream().flatMap(Level::getCodesWithLevelThree);}return Stream.empty();}
}代码解释 解析 JSON 数据: 使用 Gson 库将 JSON 字符串解析为 ListBudget 对象。TypeToken 用于指定泛型类型。 提取特定层级的数据: 使用 Stream API 递归地遍历每个预算条目及其子条目。getCodesWithLevelThree 方法检查当前条目的层级是否为 3如果是则返回其代码否则递归处理其子条目。 输出结果: 打印解析后的 ListBudget 对象。打印所有层级为 3 的代码。
结论
通过本文的示例我们可以看到使用 Java 和 Gson 库解析 JSON 数据并提取特定层级的数据是非常简单和高效的。希望本文能对大家在实际开发中处理类似问题提供帮助。