quarkus - Quarkus REST Jackson 对象映射器配置似乎不起作用
问题描述
我已将 jackson 扩展添加到我的 quarkus gradle 项目(0.23.2)中,但是在运行我的应用程序并调用我的 rest 端点时似乎没有应用此配置:
@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 请求返回的 jackson 序列化输出示例:
"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);
}
}
推荐阅读
- android - RecyclerView 具有不同样式的焦点行
- java - Apache Flink 限制正在处理的数据
- javascript - 在客户端清理用户评论
- django - Django/Ajax 发送“无”值来查看
- python - Django 在每个类别旁边显示默认照片
- flutter - 无法让 Flutter 的 DataTable 与获取的数据一起工作(与硬编码数据一起工作 - 神秘)
- python - 使用 BS4 进行网页抓取
- android-studio - Android Studio 更新不完整后无法启动
- python - 在 python pandas groupby 中绘制聚合列的值时出错
- laravel - 如何从 Laravel 获取 UID RFID 到文本字段