我有填充一個隱藏變量調用它的setter方法時,一個POJO。爪哇 - 用反序列化getter/setter方法,而不是反射
我的POJO幾乎是相同的: Gson POJO mapping loses custom field value
我使用傑克遜在我的JAX-RS項目1.9.6。在進行REST調用時,它會使用JSON並自動將其轉換爲pojo的實例。我相信傑克遜正在使用反射來做到這一點。這對我來說不好的原因是因爲反射繞過了setter方法,我的隱藏變量從未被填充過。
我如何告訴傑克遜以避免反光,並專門調用getter/setter方法?我必須用@JsonDeserialize來標記每個pojo嗎?如果是這樣,我會如何編寫一個通用的解串器(又名MyDeserializer extends JsonDeserializer<T>
)來處理不同的pojos?有沒有更好的方法,我沒有想到?
注意:在測試用例(REST之外)中,我已成功使用ObjectMapper.readValue(json,class)
,但我不確定如何將該代碼遷移到JsonDeserializer中。
如果變量是私有的,傑克遜使用getter/setter方法。如果他們是公開的,你應該可以通過註釋來做到這一點。不需要自定義的反序列化器。 – tom
哪些註釋?我有JsonProperty – user2992188
標註的所有變量標註您的getter方法,而不是私有變量... – MattR