首页 > 解决方案 > 杰克逊:反序列化地图自定义嵌套 Pojo

问题描述

我有一个简单的Map<String,String>,我想将它反序列化为带有一些内部嵌套类的 Pojo。

地图示例: Map = ["fname"="test", "lname"="test"]

Pojo 代码片段:

class CustomPojo {
   private Username username;

   static class Username {
      private String fname;
      private String lname;

      @JsonCreator
      public Username(@JsonProperty("fname") String fname, 
                @JsonProperty("lname") String lname) {
        this.fname = fname;
        this.lname = lname;
   }
}

调用代码:

CustomPojo pojo = new ObjectMapper().convert(map, CustomPojo.class);

它失败了,因为它在地图中没有任何“用户名”的映射。

有没有一种仅使用注释来解决此问题的好方法?

标签: javajacksonjackson-databind

解决方案


使用@JsonUnwrapped注释:

@JsonUnwrapped
private Username username;

推荐阅读