本文介绍在 java 中使用 jackson 库统一处理多个结构不一致的 json 文件,安全提取所有 `productid` 字段并去重合并为列表的完整实践方案。
在实际开发中,我们常需从多个来源(如不同版本 API、异构系统导出)读取 JSON 数据,而这些文件虽语义相同(均含商品 ID),但 JSON 结构却存在显著差异——例如:
- JSON №1 是顶层为 JSONArray,每个元素含 “products”: […] 数组;
- JSON №2 是顶层为 JSONObject,直接包含 “products”: […] 字段;
- 甚至可能混用 productID / productId 字段名、嵌套层级不同、或存在空值/缺失字段。
若强行用单一路径(如 obj.getJSONArray(“products”))解析,极易抛出 JSONException 或 NullPointerException。可靠解法不是“统一结构”,而是“适配结构”——即针对每种结构编写健壮的提取逻辑,并封装为可复用的解析器。
以下基于 Jackson(推荐 jackson-databind 2.15+)给出生产级实现: