杰克逊json到java对象的映射

时间:2017-03-24 04:44:17

标签: java json rest jackson

如果我传递像

这样的JSON
`{
"entity":{
"name":"xyz",
"age":21
}
}`

那么,我的POJO是否应该同时拥有" name"和" age"实例变量。我的意思是,如果我只有"名称"实例字段,映射时会有异常吗?

2 个答案:

答案 0 :(得分:1)

如果您的JSON包含POJO中不存在的额外字段,则会引发异常。为避免这种情况,您可以使用此注释@JsonIgnoreProperties忽略其他字段。 如果字段名称不同,则可以使用@jsonProperty在字段getter中定义。 (用于反序列化)。 对于序列化,在setter方法上使用注释。

@JsonIgnoreProperties(ignoreUnknown = true)
class Pojo {
    private String name;

    @jsonProperty("firstName")
    public String getName(){
        return this.name;
    }
}

答案 1 :(得分:0)

  

我的POJO必须同时拥有" name"和"年龄"实例变量

如果你的意思是"有"正如同名一样,然后没有。您可以使用注释重命名值。

如果您改为表示类定义"包含"那些价值观,那么它也不应该需要它们。这取决于您如何配置ObjectMapper。例如,an AnyGetter annotation允许您收集"额外" JSON值。因此,不需要必填字段是有道理的。