我在 AWS lambda 上部署了一个 Micronaut 无服务器功能。
默认情况下,它从响应中排除空值,但我需要它们。我尝试了以下方法来解决问题,但没有运气。
在 application.yml 下面添加
杰克逊:序列化包含:总是
添加
@JsonInclude(JsonInclude.Include.ALWAYS)
在响应发送的 POJO 上。尝试使用以下代码覆盖 ObjectMapper:
@Singleton 静态类 ObjectMapperBeanEventListener 实现 BeanCreatedEventListener {
@Override public ObjectMapper onCreated(BeanCreatedEvent<ObjectMapper> event) { logger.info("oncreated objectmapper"); ObjectMapper mapper = event.getBean(); mapper.setSerializationInclusion(JsonInclude.Include.ALWAYS); mapper.configure(SerializationFeature.WRITE_NULL_MAP_VALUES, true); mapper.setPropertyNamingStrategy(PropertyNamingStrategy.SNAKE_CASE); logger.info("oncreated objectmapper exited"); return mapper; }
}
此外,尝试了以下但它给 JsonConfiguration 错误。
@Factory @Replaces(ObjectMapperFactory.class) public class ObjectMapperConfig extends ObjectMapperFactory { @Override @Singleton @Replaces(ObjectMapper.class) public ObjectMapper objectMapper(JacksonConfiguration jacksonConfiguration, JsonFactory jsonFactory) { final ObjectMapper mapper = super.objectMapper(jacksonConfiguration, jsonFactory); mapper.setPropertyNamingStrategy(PropertyNamingStrategy.SNAKE_CASE); return mapper; }
}
任何指针?如果有任何其他解决方案或者我遗漏了什么。
Micronaut 版本:2.2.3 Java 版本:11
非常感谢您提前提供帮助。