【发布时间】:2015-10-21 19:21:56
【问题描述】:
假设我有一个如下的枚举类:
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": "en-US"}
如果我使用“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”或我在枚举类中定义的任何文本之外的任何文本。 我如何自定义 Jackson 来做到这一点?
【问题讨论】: