4

我正在使用JacksonAnnotationSpring Framework来解析我从 Web 服务为我的应用程序获取的 JSON。

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

有什么方法可以让 JsonGetter 不区分大小写,或者至少让它接受两个版本的字符串?

目前我必须将此用于方法A

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

这对于方法B

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

谢谢

4

1 回答 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 + "]";
    }
}
于 2013-07-13T00:39:58.280 回答