【问题标题】:Map nested json with jackson to java field将带有jackson的嵌套json映射到java字段
【发布时间】:2018-02-21 16:18:25
【问题描述】:

我有一个休息端点,它返回一个像这样的 3 级嵌套 json:

 {
   "user":{
      "departament":{
         "departInfo":{
            "departName":"String"
         }
      }
   }
}

我有一个没有相同 3 个嵌套级别的 java 类:

@JsonIgnorePropertires("ignoreUnknown = true")
class User(){
    String departName
}

当我使用 restTemplate 拨打休息电话时:

User response = restTemplate.exchange(url, HttpMethod.GET,
                                      request, User.class)

即使使用 json 忽略属性,jackson 也没有映射字段 departName(因为我猜它不在同一个嵌套级别)。

如何将这个 http json 响应映射到我的 java 字段而忽略嵌套的父 json?

【问题讨论】:

标签: java json spring spring-boot jackson


【解决方案1】:

你必须通过一个方法和@JsonProperty来映射你的嵌套对象

    @JsonIgnorePropertires("ignoreUnknown = true")
    class User(){
        String departName;

        @JsonProperty("department")
        private void mapDepartmentName(Map<String,Object department) {
            this.departName = ((Map<String,String>)department.get("departInfo")).get("departName");
        }
    }

【讨论】:

  • 您的意思是当您的用户下面有多个部门时?不,它不会,但是如果您想这样做,String 离开名称可能不是正确的类型,您应该考虑使用 List 离开名称;
  • 我已经用正确的 json 编辑了我的问题,它有 2 个无用的父 json(我无法更改),但我不想将那个垃圾结构复制到我的 java 模型中。即使我有 2 个 paren jsons,你的方法还能用吗?
猜你喜欢
  • 2021-07-06
  • 2020-09-01
  • 2020-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-19
  • 2023-03-30
相关资源
最近更新 更多