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

时间:2019-10-08 06:16:49

标签: quarkus

我已将jackson扩展名添加到我的quarkus gradle项目(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仍然包含空条目和空数组。这是按照quarkus指南中的示例进行的。

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

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}]}

如您所见,尽管没有配置,消息和属性仍在输出。

感谢您的帮助。

2 个答案:

答案 0 :(得分:6)

有一种简单的方法,请查看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);
    }
}

答案 1 :(得分:0)

我不确定现在是否支持此功能。但是好消息是我们在0.24.0中提供了全新的JSON定制功能(将于明天发布)。

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

它将使您轻松自定义ObjectMapper