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

标签 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 setFeatured_media(Long featured_media) {
        this.featured_media = featured_media;
    }
}

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

最佳答案

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

在本例中,请使用 JsonAlias

Annotation that can be used to define one or more alternative names for a property, accepted during deserialization as alternative to the official name

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

    public Long getFeaturedMedia() {
        return featuredMedia;
    }

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

关于java - 无法使用 Jackson 将下划线大小写转换为驼峰大小写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58898577/

相关文章:

java - 使用 ObjectMapper 反序列化到参数化类时,甚至使用 TypeReference 和 TypeFactory 时出现 ClassCastException

java - 使用 Jersey/Grizzly 的基本 HTTP 身份验证

java - Jersey 2.3 为 ContainerRequestFilter 设置优先级

java - 如何对调用 Jersey 客户端 API 的代码进行单元测试?

java - 为什么 setOnChangeListener 不能正常工作?

java - 在没有main方法的情况下,paint方法如何运行?

java - GAE - 找不到类 : Caused by: java. lang.ClassNotFoundExceptionAppIdentityCredential$AppEngineCredentialWrapper

java - 屏幕键盘

java - 从配置中动态读取@JsonProperty

java - Java 对象的 JSONPath 解析器