代码之家  ›  专栏  ›  技术社区  ›  WesleyHsiung

java将map转换为pojo忽略一些键

  •  1
  • WesleyHsiung  · 技术社区  · 7 年前

    我有一个地图,不确定它的键,但我相信键包含所有的pojo字段,说:

    public class MyPojo{ 
        String name,
        String addr
    }
    //map contains keys that not in MyPojo field,e.g. age
    map = {"name":"john","addr":"sf school","age":"21"}
    

    the following method 引发异常:

    final ObjectMapper mapper = new ObjectMapper(); // jackson's objectmapper
    final MyPojo pojo = mapper.convertValue(map, MyPojo.class);
    
    1 回复  |  直到 7 年前
        1
  •  7
  •   Safeer Ansari    7 年前

    你可以用 @JsonIgnoreProrperties 米波乔 班级。 该异常是ObjectMapper无法在MyPojo类中找到精确映射的原因。

    所以你的课应该是这样的:

    @JsonIgnoreProperties(ignoreUnknown = true)
    public class MyPojo{
       String name;
       String addr;
       //Other variables
    }
    

    import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
    

    我希望这能解决你的问题,这正是你想要的。

        2
  •  0
  •   Prasanth Rajendran    5 年前

    当您处理泛型键(以前未知)时,可能会有键(属性名)出现在映射中,而不是作为属性出现在POJO中。因此,在创建 ObjectMapper 实例,以便任何未知或丢失的属性都不会引发任何异常。

            final ObjectMapper mapper = new ObjectMapper(); // jackson's objectmapper
            mapper.configure(DeserializationFeature.FAIL_ON_IGNORED_PROPERTIES, false);
            mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);