That timestamp you have (2019-05-08T07:45:44.519Z) is an ISO-8601 instant. 
If you .register(JavaTimeModule()) (which is provided by 
jackson-modules-java8 <https://github.com/FasterXML/jackson-modules-java8>) 
in your ObjectMapper it will be able to deserialize that into a 
java.time.Instant without any other configuration.  Thereafter, you can 
convert that into the timezone you

Example in Kotlin:

import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule
import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper
import com.fasterxml.jackson.module.kotlin.readValue
import java.time.Instant

fun main() {
    data class TimeHolder(val time: Instant)

    val objectMapper = jacksonObjectMapper()
        .registerModule(JavaTimeModule())

    val thing = objectMapper.readValue<TimeHolder>("""{"time" : 
"2019-05-08T07:45:44.519Z"}""")

    println(thing) // TimeHolder(time=2019-05-08T07:45:44.519Z)
    println(thing.time.atZone(ZoneId.of("Asia/Brunei"))) // 
2019-05-08T15:45:44.519+08:00[Asia/Brunei]
}

-Drew

On Thursday, January 21, 2021 at 11:42:45 PM UTC-5 yaoh...@gmail.com wrote:

> Hello:
>
> How can I use annotations to deserialize Greenwich Time into LocalTime?
> Here is Demo class:
> public class Demo implements Serializable { private LocalDateTime time; // 
> setter getter ... }
>
> Here is Demo JSON:
> {"time" : "2019-05-08T07:45:44.519Z"}
>
> The time I expect to get is 2019-05-08T15:45:44.519, but what I get is: 
> 2019-05-08T07:45:44.519
>
> Now I'm using custom deserialized classes to solve the problem:
> public class LocalDateTimeDeserializer extends 
> JsonDeserializer<LocalDateTime> { private static final String ZULU = "Z"; 
> @Override public LocalDateTime deserialize(JsonParser jsonParser, 
> DeserializationContext deserializationContext) throws IOException, 
> JsonProcessingException { String text = jsonParser.getText(); if 
> (text.endsWith(ZULU)) { return LocalDateTime.ofInstant(Instant.parse(text), 
> ZoneId.systemDefault()); } else { return LocalDateTime.parse(text, 
> DateTimeFormatter.ISO_LOCAL_DATE_TIME); } } } public class Demo implements 
> Serializable { @JsonDeserialize(using = 
> CustomLocalDateTimeDeserializer.class) private LocalDateTime time; // 
> setter getter ... }
>
> Is there any other way?
> I would appreciate your help.
>

-- 
You received this message because you are subscribed to the Google Groups 
"jackson-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to jackson-user+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/jackson-user/441e4b96-dbea-4f24-a83f-4e26ffc45378n%40googlegroups.com.

Reply via email to