2017-03-24 130 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; 
    } 
}