如何在 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中文网其他相关文章!