Por fin luego de tanto batallar ya hallamos el resultado de esta contrariedad que tantos lectores de nuestro espacio han tenido. Si quieres compartir algo no dudes en compartir tu información.
Solución:
Así que logré encontrar una solución, pero si tiene una alternativa, publíquela.
Terminé creando una nueva primaria ObjectMapper
bean, y registrando un nuevo módulo con un serializador personalizado para OffsetDateTime
. Puedo configurar mi propio formato de fecha aquí, usando java.time.format.DateTimeFormatter
. También tuve que registrar el JavaTimeModule
con mi mapeador.
@Configuration
public class JacksonOffsetDateTimeMapper
@Primary
@Bean
public ObjectMapper objectMapper()
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.registerModule(new JavaTimeModule());
SimpleModule simpleModule = new SimpleModule();
simpleModule.addSerializer(OffsetDateTime.class, new JsonSerializer()
@Override
public void serialize(OffsetDateTime offsetDateTime, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException, JsonProcessingException
jsonGenerator.writeString(DateTimeFormatter.ISO_LOCAL_DATE_TIME.format(offsetDateTime));
);
objectMapper.registerModule(simpleModule);
return objectMapper;
ObjectMapper mapper = new ObjectMapper();
mapper.registerModule(new JavaTimeModule());
mapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
Al hacerlo, puede obtener propiedades de OffsetDateTime como ISO 8601, incluido el desplazamiento en su objetivo.
Agregar una dependencia en jackson-modules-java8 funcionó para mí (jackson-datatype-jsr310 está en desuso)
com.fasterxml.jackson.module
jackson-modules-java8
También necesitaba agregar esto para que funcione:
om.registerModule(new JavaTimeModule());
No es necesario el write-dates-as-timestamps=false o om.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS) – que es aplicable para el objeto Java “Date”.
Usé esta anotación:
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSXXX")
y obtener una salida como esta:
“marca de tiempo”:”2020-04-23T08:00:00.000-06:00″
Si te gustó nuestro trabajo, eres capaz de dejar un escrito acerca de qué te ha impresionado de esta crónica.