我有 2 條不同的駱駝路線。
1)
from(...).routeId(...)
.unmarshal().json(SomeClass.class)
....;
和 2)
from(...).routeId(...)
.unmarshal(new ListJacksonDataFormat(SomeOtherClass.class))
....;
兩者都有名為 timestamp 的欄位,其型別SomeClass
為。SomeOtherClass
java.time.ZonedDateTime
在第一條路線中,我傳遞了單個物件,并且它解組而沒有錯誤。在第二條路線中,我傳遞了一個物件串列,但它不起作用:
java.time.ZonedDateTime
com.fasterxml.jackson.databind.exc.InvalidDefinitionException:默認情況下不支持Java 8 日期/時間型別:添加模塊“com.fasterxml.jackson.datatype:jackson-datatype-jsr310”以啟用處理
問題:
- 我是否正確理解如果我想解組串列我需要使用
.unmarshal(new ListJacksonDataFormat(...))
而不是.unmarshal().json(...)
? - 我真的需要添加 Module
com.fasterxml.jackson.datatype:jackson-datatype-jsr310
嗎?否則我什至不在這里問就添加了它,但是由于我的第一條路線可以很好地管理 ZonedDateTime 我想確定我真的必須添加一個新模塊,或者是否有任何其他處理它的方法?奇怪的是,第一條路線可以很好地解組 ZonedDateTime 而第二條路線不能。
在.unmarshal(...)
我計劃呼叫.bean(..., "method")
where 方法以 List 作為引數之后。不確定是否需要此額外資訊,但添加它以防萬一。
uj5u.com熱心網友回復:
可能的問題是,在第一個示例中,您嘗試解組的實際 json 不包含時間戳,因此杰克遜不會嘗試解組 type 的欄位java.time.ZonedDateTime
。
如果您打算解組物件并填充時間戳欄位,則應將其添加com.fasterxml.jackson.datatype:jackson-datatype-jsr310
到專案中。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/530911.html