无法将杰克逊的下划线案例转换为骆驼案例

我有一个DTO类,其属性如下:

@JsonIgnoreProperties(ignoreUnknown = true)
public class WPPostResponse {
    @JsonProperty("featuredMedia")
    Long featured_media;

    public Long getFeatured_media() {
        return featured_media;
    }

    public void setfeatured_media(Long featured_media) {
        this.featured_media = featured_media;
    }
}

输入的JSON具有密钥featured_media。我将JSON字符串转换为对象,然后将其作为JSON发送到客户端响应。我希望最终响应JSON以featuredMedia作为键。但是,我得到null作为值。如果删除JsonProperty,它将给出值,但关键是带有下划线。如何解决这个问题?谢谢。

supercow0000 回答:无法将杰克逊的下划线案例转换为骆驼案例

您可以在设置程序和获取程序上使用JsonProperty,以在序列化和反序列化期间使用不同的命名

@JsonIgnoreProperties(ignoreUnknown = true)
public class WPPostResponse {

   Long featuredMedia;

   @JsonProperty("featuredMedia")    // output will be featuredMedia
   public Long getFeatured_media() {
       return featuredMedia;
   }

   @JsonProperty("featured_media")    // input should be featured_media
   public void setFeatured_media(Long featured_media) {
       this.featuredMedia = featured_media;
   }
}

还将访问级别设置为@JsonProperty注释

@JsonProperty(value = "featured_media",access = JsonProperty.Access.WRITE_ONLY)
,

始终遵守Java代码中的Java命名约定。使用注释来处理Json不尊重它们的问题。

在这种情况下,请使用JsonAlias

  

可用于为属性定义一个或多个替代名称的注释,在反序列化期间可以接受,以替代正式名称

public class WPPostResponse {
    @JsonAlias("featured_media")
    Long featuredMedia;

    public Long getFeaturedMedia() {
        return featuredMedia;
    }

    public void setFeaturedMedia(Long featuredMedia) {
        this.featuredMedia = featuredMedia;
    }
}
本文链接:https://www.f2er.com/3087268.html

大家都在问