使JsonGetter不区分大小写

4

我正在使用JacksonAnnotationSpring Framework解析我从Web服务获取的JSON数据,用于我的应用程序。

来自两个不同方法的相同数据结构,但其中一个字段大写。我不想因此创建两个数据结构。

有没有办法让JsonGetter大小写不敏感,或者至少接受字符串的两个版本?

目前,我必须为方法A使用以下代码:

@JsonGetter("CEP")
public String getCEP() {
    return this.cep;
}

并且这是针对B方法的

@JsonGetter("Cep")
public String getCEP() {
    return this.cep;
}

谢谢

1个回答

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 + "]";
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接