Java Jackson使用不同的属性名称

时间:2019-01-21 14:40:02

标签: java json jackson

我有一个生成的Java类,该类在字段上用@XMLElement注释,以将名称从大写更改为小写:

class RECTYPE {
    @XmlElement(name = "simple")
    public String SIMPLE;    

    @XmlElement(name = "bool")
    public Boolean BOOL;
}

我知道我可以使用@JsonPropertyChange field name in JSON using Jackson)来获取小写的Json,但是我不想更改生成的类。

我可以以某种方式使用我拥有的name注释的@XMLElement属性并告诉Jackson使用它吗?

谢谢!

2 个答案:

答案 0 :(得分:0)

感谢jaudo-问题已经在这里回答:Change field name in JSON using Jackson

我使用以下摘录来使用@XMLElement批注:

objectMapper.setAnnotationIntrospector(AnnotationIntrospector.pair( new JaxbAnnotationIntrospector(TypeFactory.defaultInstance()), new JacksonAnnotationIntrospector()));

答案 1 :(得分:0)

您还可以在其他类上使用混合注释。这种情况对您有用,Mix-in类如下所示:

abstract class RectypeMixIn {

  @JsonProperty("simple") abstract String getSimple(); // rename property
  @JsonProperty("bool") abstract Boolean getBool(); // rename property  
}

以这种方式配置您的ObjectMapper:

objectMapper.addMixInAnnotations(RECTYPE.class, RectypeMixIn.class);

检查此文档here以获得更多详细信息