我正在使用 JacksonAnnotation 以及 Spring Framework 来解析我从应用程序的Web服务获得的JSON。
我有两个不同方法的相同数据结构,但其中一个中有一个字段大写。我不想因此而创建两个数据结构。
有没有办法让JsonGetter不区分大小写,或者至少让它接受两个版本的字符串?
目前我必须将此用于方法A
@JsonGetter("CEP")
public String getCEP() {
return this.cep;
}
和方法B
@JsonGetter("Cep")
public String getCEP() {
return this.cep;
}
由于
答案 0 :(得分:3)
您可以为属性名称的每种可能性创建新的setter方法:
import com.fasterxml.jackson.annotation.JsonSetter;
import com.fasterxml.jackson.databind.ObjectMapper;
public class JacksonProgram {
public static void main(String[] args) throws Exception {
ObjectMapper mapper = new ObjectMapper();
System.out.println(mapper.readValue("{\"Cep\":\"value\"}", Entity.class));
System.out.println(mapper.readValue("{\"CEP\":\"value\"}", Entity.class));
}
}
class Entity {
private String cep;
public String getCep() {
return cep;
}
@JsonSetter("Cep")
public void setCep(String cep) {
this.cep = cep;
}
@JsonSetter("CEP")
public void setCepCapitalized(String cep) {
this.cep = cep;
}
@Override
public String toString() {
return "Entity [cep=" + cep + "]";
}
}