当前位置: 首页 > 知识库问答 >
问题:

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

厍建义
2023-03-14

我已将jackson扩展添加到我的quarkus gradle项目(0.23.2),但是在运行我的应用程序和调用我的restendpoint时,似乎没有应用此配置:

@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仍然包括空条目和空数组。这遵循夸克指南上的示例。

在启动时,我可以看到jackson扩展存在:

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

我错过什么了吗?

从curl超文本传输协议请求返回的jackson序列化输出示例:

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

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

谢谢你的帮助。

共有2个答案

司寇琨
2023-03-14

我不完全确定现在是否支持这一点。但好消息是,我们在0.24.0版本中推出了一个全新的JSON定制特性(应该明天发布)。

你可以在这里找到更多关于它的信息:https://github.com/quarkusio/quarkus/blob/master/docs/src/main/asciidoc/rest-json-guide.adoc#jackson。

它将允许您轻松自定义ObjectMapper

何麻雀
2023-03-14

有一个简单的方法可以做到这一点,看看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);
    }
}
 类似资料:
  • 我的代码看起来像 我的文件如下所示 当我运行程序时,我看到 我怎样才能修好它呢?

  • 我正在使用Vue CLI 3.0。0(rc.10)和am并排运行两个服务器(后端服务器和WDS)。 我跟踪了devServer。Vue CLI文档中的代理说明,用于将代理选项添加到我的。我还按照http代理中间件库的说明补充了以下选项: 我的理解是,选项需要动态地将请求上的头更改为“http://localhost:4000“。但是,来自我的应用程序的请求仍从发送http://localhost:

  • 问题内容: 我在使用该功能时遇到了麻烦。 我只需要知道SQL查询是否返回零行。 我已经尝试过以下简单的语句: 类型是哪里。上面的代码似乎不起作用。无论是否为空,它将始终打印该消息。 我检查了SQL查询本身,当存在行时它正确返回了非空结果。 关于如何确定查询是否已返回0行的任何想法?我用谷歌搜索,找不到任何答案。 问题答案: ResultSet.getFetchSize()不返回结果数!从这里: 使

  • 我有一个工作流,它执行一系列模糊测试,最后计算所有崩溃程序子目录中的文件总数。后来,在另一份工作中,我使用该号码向Slack发送通知。但是,由于某些原因,不会产生任何输出,最重要的是,即使崩溃程序的数量不是零,下一个作业也不会运行! 有人知道我做错了什么吗?谢谢!

  • 问题内容: 即使将属性设置为,我仍然会插入重复的条目。 我设置了使用定期在。我没有用表 问题答案: 我没有使用JPA创建表 然后,您应该在语句中向表中添加唯一约束,例如,如果您使用的是MySQL: