我有一個包含以下欄位及其各自的 getter 的類,以及一個getTotalBalance
我沒有任何欄位但自定義實作的附加方法。
public class demo{
private String balance;
private String blockedBalace;
private String futureBalance;
private String availableBalance;
//getters for previous fields
public String getTotalBalance(){
//something..
}
當我序列化此類的物件時,我得到以下 JSON 輸出。
{
"balance": "12.30",
"blockedBalance":"23.45",
"futureBalance" :"56.22",
"availableBalance" :"12.30",
"totalBalance" : "34.11"
}
即使我沒有為 宣告一個欄位totalBalance
,我最終還是將它序列化了。這怎么可能?
uj5u.com熱心網友回復:
Jackson 默認使用 getter 進行序列化,使用 setter 進行反序列化。
您可以使用@JsonIgnore
getter 方法忽略它,或者您可以將物件映射器配置為僅將欄位用于序列化/des:
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.NONE);
objectMapper.setVisibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.ANY);
uj5u.com熱心網友回復:
杰克遜(默認情況下)不關心欄位。它將簡單地序列化 getter 提供的所有內容,并使用匹配的 setter 反序列化所有內容。那些 getter/setter 所做的并不重要。
不過請注意,關于 Jackson 的每一件小事都可以深度定制和配置,所以我只談論默認設定。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/470362.html
上一篇:多對多關系不會將新物體添加到表中