反序列化 java.time.OffsetDateTime 时出错:com.fasterxml.jackson.databind.exc.MismatchedInputException

问题描述

我正在尝试使用 Jackson objectmapper 将 json 字符串反序列化为类对象,并在 -

objectMapper.readValue(jsonStr,someclass)
com.fasterxml.jackson.databind.exc.MismatchedInputException: 
Cannot deserialize value of type `java.time.OffsetDateTime` from Object value 
(token `JsonToken.START_OBJECT`)
at [Source: (StringReader); line: 1,column: xxx] (through reference chain:...

问题列xxx有这个-

"myDateTime": {
      "dateTime": {
        "date": {
          "month": 1,"year": 2021,"day": 7
        },"time": {
          "hour": 16,"nano": 0,"minute": 0,"second": 0
        }
      },"offset": {
        "totalSeconds": 0
      }
    }

写这个日期时间的类看起来像这样 -

import java.time.OffsetDateTime

private var myDateTime: OffsetDateTime = OffsetDateTime.Now

  def getMyDateTime: OffsetDateTime = myDateTime

  def setMyDateTime(myDateTime: OffsetDateTime): Unit = {
    this.myDateTime = myDateTime
  }

我的 objectMapper 是这样定义的 -

val df: SimpleDateFormat = new SimpleDateFormat("MMM dd,yyyy hh:mm:ss aa",Locale.ENGLISH)

val objectMapper: ObjectMapper = new ObjectMapper().registerModule(new DefaultScalaModule)
    .registerModule(new JavaTimeModule())
    .registerModule(new Jdk8Module())
    .disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS)
    .setDateFormat(df)

有没有办法反序列化这个日期时间字段? 谢谢。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)