2017-03-24 134 views
-3

如果我通过一个JSON像杰克逊JSON到Java对象的映射

`{ 
"entity":{ 
"name":"xyz", 
"age":21 
} 
}` 

话,岂不是强制性的,我POJO应该有两个“name”和“age”实例变量。我的意思是,如果我只有“名称”实例字段,映射时是否会有任何异常?

+2

你尝试过吗? – Jerry06

+0

你有什么尝试做得很好? –

回答

0

是强制性的,我的POJO应该有两个“名”和“年龄”的实例变量

如果你的意思是“有”在同一名称完全相同,则没有。您可以使用注释来重命名值。

如果您的意思是类定义“包含”这些值,那么它也不应该需要它们。这取决于你如何配置ObjectMapper,但。例如,有an AnyGetter annotation可以让你收集“额外的”JSON值。因此,强制字段不是必需的。

1

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

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

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