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

294
Vistas
Jackson deserializa JSON con el campo de marca de tiempo

Tengo tal cadena:

 { "debug":"false", "switchTime":"2017-04-12 17:04:42.896026" }

Estoy tratando de obtener un objeto en tal enfoque:

 new ObjectMapper().readValue(string, MyObject.class);

Y clase MiObjeto:

 class MyObject { private Boolean debug; private Timestamp switchTime; //...getters, setters, constructors }

Tengo tal excepción:

 com.fasterxml.jackson.databind.exc.InvalidFormatException: Can not deserialize value of type java.sql.Timestamp from String "2017-04-12 17:04:42.896026": not a valid representation (error: Failed to parse Date value '2017-04-12 17:04:42.896026': Can not parse date "2017-04-12 17:04:42.896026Z": while it seems to fit format 'yyyy-MM-dd'T'HH:mm:ss.SSS'Z'', parsing fails (leniency? null)) at [Source: {"debug":"false", "switchTime":"2017-04-12 17:04:42.896026"};

No entiendo por qué... Si uso en modo de depuración Timestamp.valueOf() con "2017-04-12 17:04:42.896026" - tengo éxito

about 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Creo que debe establecer el formato de fecha/hora esperado usando la anotación @JsonFormat como se muestra a continuación.

 class MyObject { private Boolean debug; @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss.SSS") private Timestamp switchTime; //...getters, setters, constructors }

También puede establecer la zona horaria como @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss.SSS",timezone="PST")

about 4 years ago · Santiago Trujillo Denunciar

0

Enfrenté un problema similar cuando estaba usando lombok en la clase POJO que tiene anotaciones @Builder y @Value

También agregué la anotación AllArgsConstructor y luego funciona bien con mi código de deserializador personalizado

about 4 years ago · Santiago Trujillo Denunciar

0

El valor que ve en el modo de depuración es la versión "toString()" del valor real de la marca de tiempo, así que no confíe en lo que inspecciona en el modo de depuración. Puede usar la anotación @JsonFormat que lo ayuda a convertir su marca de tiempo con el formato especificado. ¡También debe cuidar las zonas horarias durante la conversión!

about 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