[英]Jackson JSON parsing enum value
假設我有一個如下的枚舉類:
public enum Lang {
ENGLISH("en_US"), FRENCH("fr_CA");
String val;
Lang(String val) {
this.val = val;
}
public String getValue() {
return val;
}
}
我有一個POJO如下:
public class Foo {
private String bar;
private Lang lang;
public String getBar() {
return bar;
}
public void setBar(String bar) {
this.bar = bar;
}
public Lang getLang() {
return lang;
}
public void setLang(Lang lang) {
this.lang = lang;
}
}
如何配置Jackson將以下有效負載轉換為POJO類?
{“ bar”:“ someValue”,“ lang”:“ zh-CN”}
如果我使用“ en-US”或“ fr-CA”以外的任何其他字符串,則Jackson需要拒絕它。
當我遇到類似以下內容時,我看到的是:
{"bar":"bar","lang":"ENGLISH"}
Foo f = new Foo();
f.setBar("bar");
f.setLang(Lang.ENGLISH);
ObjectMapper mapper = new ObjectMapper();
String json = mapper.writeValueAsString(f);
System.out.println(json);
除了“ en-US”或在枚舉類中定義的任何內容外,我不需要任何其他文本。 我如何自定義傑克遜來做到這一點?
您可以使用以下代碼/注釋:
@JsonFormat
public enum Lang {
ENGLISH("en_US"),
FRENCH("fr_CA");
private String val;
Lang(String val) {
this.val = val;
}
@JsonValue
public String getValue() {
return val;
}
@JsonCreator
public static Lang fromValue(String value) {
// TODO return the Lang with the given value, or throw an IllegalArgumentException
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.