如何以下列格式反序列化json对象(OffsetDateTime),
{
"hour": 3,
"nano": 641000000,
"year": 2016,
"month": "OCTOBER",
"minute": 6,
"offset": {
"id": "Z",
"rules": {
"fixedOffset": true,
"transitions": [
],
"transitionRules": [
]
},
"totalSeconds": 0
},
"second": 13,
"dayOfWeek": "THURSDAY",
"dayOfYear": 301,
"dayOfMonth": 27,
"monthValue": 10
}
使用jackson 到Java OffsetDateTime。
我已经包含了JSR jackson依赖项,并且还在objectMapper中注册了JavaTimeModule。它不起作用,因为在尝试反序列化时,JSR Jackson jar的InstantDeseralizer期望将float,String,embedded对象或float作为值(抛出异常)而不是作为标记的起始对象。
答案 0 :(得分:1)
你接近这个的方式是不对的。使用java时间模块的要点是解析作为ISO标准的json字符串。
你拥有的字符串是你不使用java时间模块时得到的json,它主要用于对所有成员字段和getter进行字符串化。
由于所有的java时间类都是不可变的,所以jackson不会被取消选择。
因此,为了继续使用非标准的json,你甚至不需要一个java时间模块。 您可能必须编写自定义deserailizer并从json字段重新创建LocalDate,LocalTime和ZoneOffset,并使用静态OffsetDateTime.of(LocalDate,LocalTime,ZoneOffset)来创建OffsetDateTime。