我正嘗試反序列化一個JSON成階類,它包含類型ACLASS,Bclass或Cclass傑克遜反序列化與泛型
class Results[M](results:util.ArrayList[M]) {
def getResults:util.ArrayList[M]=results
def this() {
this(new util.ArrayList())
}
}
JSON的樣子的集合:
{ "results":[{"a":1},{"a":1}]}
或
{ "results":[{"b":1},{"b":1}]}
或
{ "results":[{"b":1},{"b":1}]}
這裏我對象映射
val mapper = new ObjectMapper().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false)
在這裏,我如何反序列化類類型的JSON ACLASS
val results = mapper.readValue(json, classOf[Results[Aclass]])
的問題是,結果,返回一個ArrayList中,每一個元素,而不是成爲一個實例Aclass,是一個LinkedHashMap
。
如果我改變代碼,而不是使用通用I使其在類型
class Results[Aclass](results:util.ArrayList[Aclass]) {
def getResults:util.ArrayList[Aclass]=results
def this() {
this(new util.ArrayList())
}
}
它的工作原理,並與ACLASS元素的數組的結果返回一個類明確。
我在這裏做錯了什麼?我認爲這是庫中的一個錯誤
此致。
你堅持與傑克遜或是否也能使用一個庫,這不是反射型(例如瑟茜或淘金者)? – Reactormonk
完全打開使用新的庫,如果不需要太多的代碼,並實現我想要的。但無論如何,我設法使它使用TypeFactory,但仍然不是很高興我的解決方案看起來多麼複雜 – paul