Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用自定义对象映射器在Vertx 4.0中注册Jackson编解码器的位置在哪里_Java_Vert.x_Vertx Verticle - Fatal编程技术网

Java 使用自定义对象映射器在Vertx 4.0中注册Jackson编解码器的位置在哪里

Java 使用自定义对象映射器在Vertx 4.0中注册Jackson编解码器的位置在哪里,java,vert.x,vertx-verticle,Java,Vert.x,Vertx Verticle,我试图转换为纯,遇到了一个问题 在Quarkus中,定制Jackson ObjectMapper以序列化或反序列化HTTP消息很容易 @适用范围 公共类CustomObjectMapper实现ObjectMapperCustomizer{ @凌驾 公共void自定义(ObjectMapper ObjectMapper){ objectMapper.disable(SerializationFeature.WRITE_DATES_作为时间戳); objectMapper.disable(Seri

我试图转换为纯,遇到了一个问题

在Quarkus中,定制Jackson ObjectMapper以序列化或反序列化HTTP消息很容易


@适用范围
公共类CustomObjectMapper实现ObjectMapperCustomizer{
@凌驾
公共void自定义(ObjectMapper ObjectMapper){
objectMapper.disable(SerializationFeature.WRITE_DATES_作为时间戳);
objectMapper.disable(SerializationFeature.WRITE_DATE_TIMESTAMPS_为_纳秒);
禁用(反序列化功能。读取\u日期\u时间戳\u为\u纳秒);
JavaTimeModule=newJavaTimeModule();
LocalDateTimeDeserializer LocalDateTimeDeserializer=新的LocalDateTimeDeserializer(DateTimeFormatter.ISO\u LOCAL\u DATE\u TIME);
addDeserializer(LocalDateTime.class,localDateTimeDeserializer);
objectMapper.registerModule(模块);
}
}
在Vertx中,如何优雅地定制
ObjectMapper
?我的目的是注册一个自定义的
ObjectMapper
而不是内置的,因此当使用
Json.encode
时,它将使用我的自定义
ObjectMapper


在中,
Json.encode
将使用内置的
objectMapper
将Java 8 DateTime序列化为int数组,而不是ISO日期字符串。

首先,您需要将
jackson databind
添加到依赖项中,因为Vert.x 4不能传递

然后在您的主要方法中:

io.vertx.core.json.jackson.DatabindCodec codec = (io.vertx.core.json.jackson.DatabindCodec) io.vertx.core.json.Json.CODEC;
// returns the ObjectMapper used by Vert.x
ObjectMapper mapper = codec.mapper();
// returns the ObjectMapper used by Vert.x when pretty printing JSON
ObjectMapper prettyMapper = codec.prettyMapper();

现在,您可以使用JacksonFactory配置两个映射器

Vertx配置一个
DatabindCodec
(当然,我包括了databind和jsr310模块),JacksonFactory在那里定义了一个
ObjectMapper
。我不知道如何配置它。对于我的应用程序,当我在处理程序中调用
Json
方法时,Java 8 Datetime不是序列化为字符串而是一个int数组(这是Java中的一个普遍问题,可以通过调整ObjectMapper的参数来解决)。对于我(VertX 4.0.3)
mapper()
prettyMapper()
DatabindCodec
上的静态方法。因此,访问
Json
类并转换编解码器似乎是不必要的。您可以直接访问映射器,例如
DatabindCodec.mapper()