Tengo un pequeño problema al formatear un Java 8 LocalDateTime en mi aplicación Spring Boot. Con fechas 'normales' no tengo ningún problema, pero los campos LocalDateTime se convierten a lo siguiente:
"startDate" : {
"year" : 2010,
"month" : "JANUARY",
"dayOfMonth" : 1,
"dayOfWeek" : "FRIDAY",
"dayOfYear" : 1,
"monthValue" : 1,
"hour" : 2,
"minute" : 2,
"second" : 0,
"nano" : 0,
"chronology" : {
"id" : "ISO",
"calendarType" : "iso8601"
}
}
Si bien me gustaría convertirlo en algo como:
"startDate": "2015-01-01"
Mi código se ve así:
@JsonFormat(pattern="yyyy-MM-dd")
@DateTimeFormat(iso = DateTimeFormat.ISO.TIME)
public LocalDateTime getStartDate() {
return startDate;
}
Pero cualquiera de las anotaciones anteriores no funciona, la fecha sigue formateándose como arriba. ¡Sugerencias bienvenidas!
@JsonSerialize(using = LocalDateTimeSerializer.class)
...application.properties
entrada, como sugiere la respuesta de @patelb.@JsonSerialize
anotación que Nick mencionó para que funcionara.Agregué la
com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.6.1
dependencia y comencé a obtener la fecha en el siguiente formato:que no es lo que quería pero me estaba acercando. Luego agregué lo siguiente
al archivo application.properties que me dio el formato correcto que necesitaba.
fuente
jackson-datatype-jsr310
dependencia. Esta debería ser la respuesta aceptada.mapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
Aquí está en maven, con la propiedad para que pueda sobrevivir entre las actualizaciones de arranque de primavera
fuente
@JsonSerialize(using = LocalDateTimeSerializer.class)
1) Dependencia
2) Anotación con formato de fecha y hora.
3) Configuración de primavera.
fuente
Encontré otra solución que puede convertir a cualquier formato que desee y aplicar a todos los tipos de datos LocalDateTime y no tiene que especificar @JsonFormat por encima de cada tipo de datos LocalDateTime. primero agregue la dependencia:
Agregue el siguiente frijol:
en su archivo de configuración agregue lo siguiente:
Esto serializará y deserializará todas las propiedades LocalDateTime y ZonedDateTime siempre que esté utilizando objectMapper creado por Spring.
El formato que obtuvo para ZonedDateTime es: "2017-12-27T08: 55: 17.317 + 02: 00 [Asia / Jerusalem]" para LocalDateTime es: "2017-12-27T09: 05: 30.523"
fuente
SimpleModule
extiendeModule
.Module
es un resumen.val bean = new SimpleModule();
funciona perfecto.Escribiendo esta respuesta como un recordatorio para mí también.
Combiné varias respuestas aquí y al final la mía funcionó con algo como esto. (Estoy usando SpringBoot 1.5.7 y Lombok 1.16.16)
fuente
DateTimeFormat
y otros.Esto funciona bien:
Agrega la dependencia:
Agrega la anotación:
Ahora, debe obtener el formato correcto.
Para usar el mapeador de objetos, necesita registrar JavaTime
fuente
Como ya se mencionó, spring-boot buscará todo lo que necesita (tanto para web como para webflux starter).
Pero lo que es aún mejor: no es necesario que registre ningún módulo usted mismo. Echa un vistazo aquí . Dado que se
@SpringBootApplication
usa@EnableAutoConfiguration
bajo el capó, significaJacksonAutoConfiguration
que se agregará al contexto automáticamente. Ahora, si miras dentroJacksonAutoConfiguration
, verás:Este tipo será llamado en el proceso de inicialización y buscará todos los módulos que pueda encontrar en el classpath. (Yo uso Spring Boot 2.1)
fuente
Estoy usando Springboot 2.0.6 y, por alguna razón, los cambios de yml de la aplicación no funcionaron. Y también tenía más requisitos.
Intenté crear ObjectMapper y marcarlo como principal, pero Spring Boot se quejó de que ya tengo jacksonObjectMapper como principal.
Entonces esto es lo que hice. Hice cambios en el mapeador interno.
Mi serializador y deserializador son especiales: se ocupan de 'dd / MM / AAAA'; y mientras deserializa, hace todo lo posible por usar 3-4 formatos populares para asegurarse de que tengo algo de LocalDate.
fuente
@JsonDeserialize(using= LocalDateDeserializer.class)
no me funciona con la siguiente dependencia.He utilizado el siguiente convertidor de código para deserializar la fecha en un archivo
java.sql.Date
.fuente
simplemente usa:
o puede usar el patrón que desee, por ejemplo:
('-' in place of '/')
fuente
Estoy usando Spring Boot 2.1.8. Yo he importado
que incluye jackson-datatype-jsr310 .
Luego, tuve que agregar estas anotaciones
y funciona. El JSON se ve así:
fuente
spring-boot-starter-json
solo es necesario sispring-boot-starter-web
falta.