Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

489
Vistas
Cómo serializar java.time.Instant como cadena ISO en Spring Webflux

¿Cómo puedo configurar webflux para serializar java.time (específicamente Instant) como una cadena de fecha ISO?

Con el siguiente código obtengo:

{"id":"id","timestamp":1606890022.131813600}

Me gustaría conseguir

{"id":"id","timestamp":"2020-12-02T07:20:16.553Z"}

 @EnableWebFlux @SpringBootApplication public class WebfluxJavaTimeSerializationApplication { public static void main(String[] args) { SpringApplication.run(WebfluxJavaTimeSerializationApplication.class, args); } @Bean public RouterFunction<?> routerFunction() { return route().GET("/resource", request -> ServerResponse.ok().body(Mono.just(new Resource()),Resource.class)).build(); } public class Resource { String id = "id"; Instant timestamp = Instant.now(); public String getId() { return id; } public Instant getTimestamp() { return timestamp; } } }

He probado configuraciones como:

 @Configuration @EnableWebFlux public class WebConfig implements WebFluxConfigurer { //moved from application class @Bean public RouterFunction<?> routerFunction() { return route().GET("/resource", request -> ServerResponse.ok().body(Mono.just(new Resource()), Resource.class)).build(); } @Override public void addFormatters(FormatterRegistry registry) { DateTimeFormatterRegistrar registrar = new DateTimeFormatterRegistrar(); registrar.setUseIsoFormat(true); registrar.registerFormatters(registry); } @Override public void configureHttpMessageCodecs(ServerCodecConfigurer configurer) { ObjectMapper objectMapper = new ObjectMapper().registerModule(new JavaTimeModule()); configurer.defaultCodecs().jackson2JsonEncoder(new Jackson2JsonEncoder(objectMapper)); configurer.defaultCodecs().jackson2JsonDecoder(new Jackson2JsonDecoder(objectMapper)); } }

pero no cambia la respuesta. Creo que los formateadores solo se usan para la deserialización y los códecs para WebClient (pero pueden estar equivocados).

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Está deshabilitando la configuración automática de Jackson y WebFlux debido a que agregó @EnableWebFlux . Con este Spring Boot, retrocederá en la configuración de las cosas, una de esas cosas es un Jackson completamente preconfigurado.

Así que trate de no engañar a los valores predeterminados en este caso.

Elimine @EnableWebFlux y también elimine el formato específico para Jackson. En realidad, podría eliminar los implements WebFluxConfigurer y eliminar los métodos anulados.

over 4 years ago · Santiago Trujillo Denunciar

0

Tengo el mismo problema que Streef.

En mi caso, implementar WebFluxConfigurer y usar configureHttpMessageCodecs es lo que resuelve el problema.

 @Configuration public class JacksonConfiguration implements WebFluxConfigurer { private final ObjectMapper mapper; public JacksonConfiguration(ObjectMapper mapper) { this.mapper = mapper; } @Override public void configureHttpMessageCodecs(ServerCodecConfigurer configurer) { configurer.defaultCodecs().jackson2JsonEncoder(new Jackson2JsonEncoder(mapper)); configurer.defaultCodecs().jackson2JsonDecoder(new Jackson2JsonDecoder(mapper)); WebFluxConfigurer.super.configureHttpMessageCodecs(configurer); } }
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda