【问题标题】:Make JsonGetter case insensitive使 JsonGetter 不区分大小写
【发布时间】:2013-07-12 19:01:41
【问题描述】:

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

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

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

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

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

这用于方法 B

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

谢谢

【问题讨论】:

    标签: java android json jackson fasterxml


    【解决方案1】:

    您可以为每种可能的属性名称创建新的 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 + "]";
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2012-12-01
      • 2013-03-06
      • 2020-02-18
      • 1970-01-01
      • 1970-01-01
      • 2020-06-03
      • 1970-01-01
      • 2011-10-14
      • 1970-01-01
      相关资源
      最近更新 更多