[不重複]。如何告訴傑克遜忽略字段,因爲該字段沒有條件爲空?
我需要JsonIgnore正好相反。在我的用例中,只有一個字段需要在序列化中添加,而其他所有字段都將被忽略。我探索了@JsonSerialize,@JsonInclude和@JsonProperty,但沒有按我的要求工作。
有沒有辦法實現這一點,或者我需要用@JsonIgnore來標記要忽略的字段?
[不重複]。如何告訴傑克遜忽略字段,因爲該字段沒有條件爲空?
我需要JsonIgnore正好相反。在我的用例中,只有一個字段需要在序列化中添加,而其他所有字段都將被忽略。我探索了@JsonSerialize,@JsonInclude和@JsonProperty,但沒有按我的要求工作。
有沒有辦法實現這一點,或者我需要用@JsonIgnore來標記要忽略的字段?
默認情況下,傑克遜會自動探測出你的對象中的所有getter和序列化他們的價值觀。傑克遜區分「正常」getters(以「get」開頭)和「is-getters」(以「is」開頭,布爾值)。您可以通過配置ObjectMapper
這樣禁用自動檢測兩個完全:
ObjectMapper mapper = new ObjectMapper();
mapper.disable(MapperFeature.AUTO_DETECT_GETTERS);
mapper.disable(MapperFeature.AUTO_DETECT_IS_GETTERS);
或者,您也可以禁用每個階級基礎使用@JsonAutoDetect
上的自動檢測。註釋您實際上想用@JsonProperty
序列化的字段或獲取者。
@JsonAutoDetect(getterVisibility = JsonAutoDetect.Visibility.NONE,
isGetterVisibility = JsonAutoDetect.Visibility.NONE)
public class MyObject {
private String foo;
@JsonProperty("bar")
private String bar;
private boolean fubar;
public MyObject(String foo, String bar, boolean fubar) {
this.foo = foo;
this.bar = bar;
this.fubar = fubar;
}
public String getFoo() {
return foo;
}
public String getBar() {
return bar;
}
public boolean isFubar() {
return fubar;
}
}
序列化MyObject
這樣的:
mapper.writeValueAsString(new MyObject("foo", "bar", true));
會導致以下JSON你想 「@expose」 只相當於GSON
{"bar":"bar"}
你可以試試這個@JsonIgnoreProperties(「PROPERTYNAME」)可變的頂部..
做什麼?也許重複的[這個問題](http://stackoverflow.com/questions/22668374/jackson-serialize-only-marked-fields) – boly38