Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

487
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda