【问题标题】:Java Jackson use different property name [duplicate]Java Jackson使用不同的属性名称[重复]
【发布时间】:2019-06-14 23:29:09
【问题描述】:

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

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

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

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

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

谢谢!

【问题讨论】:

    标签: java json jackson


    【解决方案1】:

    您还可以在其他类上使用 Mix-in 注释。这在您的情况下很有用,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了解更多详情

    【讨论】:

    • 谢谢!这也是一种方式,但我必须生成更多的类。使用另一种解决方案,我基本上可以使用一行代码来使用已经存在的注释!但它可能对其他人有用!
    【解决方案2】:

    感谢 jaudo - 问题已在此处得到解答:Change field name in JSON using Jackson

    我使用以下片段来使用@XMLElement 注释:

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

    【讨论】:

      猜你喜欢
      • 2016-02-11
      • 2015-06-05
      • 2016-12-03
      • 2021-07-23
      • 2012-08-21
      • 1970-01-01
      • 2012-03-13
      相关资源
      最近更新 更多