,java,jackson-databind,jackson2"/>

首页 > 解决方案 > 仅将列入白名单的属性从 JSON 转换为 Map

问题描述

想要将传入的 JSON 转换为 aMap<String, Object>但具有以下要求:

  1. 未知属性不应导致异常 ( objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false))。
  2. 只有传入 JSON 的白名单属性应该出现在Map(使用上述配置,甚至未知属性也会出现在 中Map)。
  3. 列入白名单的属性应自动对应于 POJO 的字段。

将 JSON 直接转换为我的 POJO 会处理第 1、2 和 3 点,但我会失去关于传入 JSON 中包含哪些属性的知识,这就是我想转换为Map.

从 JSON 到 POJO 到Map(我们称之为Map2)也可以,但是 POJO 中的任何原始字段都会在Map2中具有默认值,即使它们在 JSON 中不存在。

换句话说,我希望结果中的字段Map是 JSON 的属性和 POJO 中的字段的交集。

例如,给定 JSON:

{
    "name": "ABCD",
    "_email": "abcd@example.com",
    "roles": [
        "USER"
    ]
}

其中nameroles是 POJO 中的有效字段(email有效,但不是_email),我想最终得到Map

{
    name: "ABCD",
    roles: [ "USER"]
}

不想手动编码各种 POJO 的有效字段名称列表。

标签: javajackson-databindjackson2

解决方案


推荐阅读