首页 > Java > java教程 > 如何配置Spring的ObjectMapper只序列化@JsonProperty注释的元素?

如何配置Spring的ObjectMapper只序列化@JsonProperty注释的元素?

DDD
发布: 2024-12-02 15:19:11
原创
591 人浏览过

How to Configure Spring's ObjectMapper to Serialize Only @JsonProperty Annotated Elements?

如何在 Spring 中配置 ObjectMapper

问题:

你想在 Spring 中配置 ObjectMapper Spring仅序列化用@JsonProperty注释的元素。但是,尽管遵循建议的说明,NumbersOfNewEvents 类在序列化时仍然包含所有属性。

说明:

在自定义 CompanyObjectMapper 中,您已设置可见性检查器默认情况下隐藏所有字段和 getter/setter。这会阻止 ObjectMapper 访问和序列化 newAccepts 和 openRequests 字段。

解决方案:

要达到期望的结果,可以使用更有针对性的方法来配置可见性检查员。下面是一个示例:

public class CompanyObjectMapper extends ObjectMapper {
    public CompanyObjectMapper() {
        super();
        SerializationConfig config = getSerializationConfig();
        config.withView(Some.class)   // Specify which view to use
             .withVisibility(JsonAutoDetect.Visibility.NONE)
             .withVisibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.ANY);
    }
}
登录后复制

此配置将允许序列化带有 @JsonProperty 注解的属性,同时隐藏其他字段。

Spring Boot 配置:

如果您使用 Spring Boot 和 Jackson 2.4.6 或更高版本,您可以使用以下命令配置:

@Configuration
public class JacksonConfiguration {

    @Bean
    public ObjectMapper objectMapper() {
        ObjectMapper mapper = new ObjectMapper();
        mapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);  // Enable default typing for polymorphic types
        mapper.setVisibility(PropertyAccessor.FIELD, Visibility.ANY);      // Allow serialization of fields
        mapper.configure(MapperFeature.DEFAULT_VIEW_INCLUSION, true);  // Enable default view inclusion
        return mapper;
    }
}
登录后复制

此配置启用多态类型的默认类型,允许所有字段的序列化,并启用默认视图包含。

以上是如何配置Spring的ObjectMapper只序列化@JsonProperty注释的元素?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板