Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法使用Jackson将下划线大小写转换为驼峰大小写_Java_Jackson_Jax Rs_Jersey 1.0 - Fatal编程技术网

Java 无法使用Jackson将下划线大小写转换为驼峰大小写

Java 无法使用Jackson将下划线大小写转换为驼峰大小写,java,jackson,jax-rs,jersey-1.0,Java,Jackson,Jax Rs,Jersey 1.0,我有一个DTO类,它的属性如下: @JsonIgnoreProperties(ignoreUnknown = true) public class WPPostResponse { @JsonProperty("featuredMedia") Long featured_media; public Long getFeatured_media() { return featured_media; } public void setFea

我有一个
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具有键
的特性\u media
。我将JSON字符串转换为对象,然后将其作为JSON发送到客户端响应。我希望最终的JSON响应将
featuredMedia
作为键。但是,我得到的值是
null
。如果删除
JsonProperty
,它会给出值,但键有下划线。如何解决这个问题?谢谢。

您可以使用on setter和getter在序列化和反序列化期间进行不同的命名

@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

在这种情况下,使用

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

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

    public Long getFeaturedMedia() {
        return featuredMedia;
    }

    public void setFeaturedMedia(Long featuredMedia) {
        this.featuredMedia = featuredMedia;
    }
}