Quarkus REST Jackson 对象映射器配置似乎不起作用



我已经将杰克逊扩展添加到我的夸库斯格拉德尔项目(0.23.2(中,但是在运行我的应用程序和调用我的休息端点时,似乎没有应用此配置:

@ApplicationScoped
public class ObjectMapperConfiguration {
@Singleton
@Produces
public ObjectMapper objectMapper() {
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
objectMapper.setSerializationInclusion(JsonInclude.Include.NON_EMPTY);
return objectMapper;
}
}

序列化的 json 仍然包含空条目和空数组。这是遵循夸克指南上的例子。

在启动时,我可以看到杰克逊扩展存在:

2019-10-08 07:04:00,613 INFO  [io.quarkus] (main) Installed features: [cdi, hibernate-validator, resteasy, resteasy-jackson, smallrye-openapi, swagger-ui]

我错过了什么吗?

从 curl HTTP 请求返回的杰克逊序列化输出示例:

"code":"invalid.request", "message": null, "attributes": null, "errors": [{"code":"data", "message":"must not be blank","attributes":null,"errors":null}]}

如您所见,尽管已配置为不输出消息和属性,但仍在输出消息和属性。

感谢您的帮助。

有一个简单的方法可以做到这一点,看看 https://quarkus.io/guides/rest-json。

你的代码应该是这样的:

@Singleton
public class RegisterCustomModuleCustomizer implements ObjectMapperCustomizer {
@Override
public void customize(ObjectMapper objectMapper) {
objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
objectMapper.setSerializationInclusion(JsonInclude.Include.NON_EMPTY);
}
}

我不完全确定现在是否支持此功能。但好消息是,我们在 0.24.0 中推出了一个全新的 JSON 自定义功能(应该在明天发布(。

您可以在此处找到有关它的更多信息: https://github.com/quarkusio/quarkus/blob/main/docs/src/main/asciidoc/rest-json.adoc#jackson .

它将允许您轻松自定义ObjectMapper

最新更新