本文介绍在 java 中使用 jackson 库统一处理多个结构不一致的 json 文件,安全、灵活地提取所有 `productid` 字段并汇总为列表,适用于异构 json 数据源的批量解析场景。
在实际开发中,我们常需从多个 JSON 文件中提取相同语义但嵌套路径或结构不同的字段(如 productID)。例如,你提供的两个 JSON 文件:
- JSON №1 是一个顶层 JSON 数组,每个元素包含 “products”: […] 字段,其内部对象含 “productID”;
- JSON №2 则是单个 JSON 对象,直接拥有 “products”: […] 字段,结构更扁平。
二者虽语义一致(均描述产品列表),但 JSON 树形结构不同,无法用同一段硬编码路径(如 root.get(“products”))直接通用解析。此时,关键不是“强制统一结构”,而是“按需适配结构” —— 使用 Jackson 的 JsonNode API 动态探查与安全导航,是最佳实践。
✅ 推荐方案:基于 JsonNode 的弹性解析
以下是一个完整、健壮、可扩展的实现,支持任意数量、任意结构的 JSON 文件,并自动识别 productID 所在路径: