【发布时间】:2017-10-16 10:00:23
【问题描述】:
我一直在尝试各种解决方案来使其正常工作。但没有成功。
我有几个这样的课程
class Level1<T> {
public Level2<T> l2;
}
class Level2<T> {
public Level3<T> l3;
}
class Level3<T> {
public List<T> objectsList;
}
T 在这种情况下可以是任何对象,并且应该可以在运行时解析。
我的 JSON 如下所示:
{
"Level1": {
"Level2": {
"Level3": {
"genericObject": [
{
"attribute1": ...,
"attribute2": ...
},
{
"attribute1": ...,
"attribute2": ...
}
]
}
}
}
}
JSON 属性“genericObject”会根据我收到的对象类型更改其名称和属性。
我尝试像这样在我的 ObjectMapper 中定义,其中我将一个 Class 对象传递给我的函数(genericObjectClass):
JavaType javaType = TypeFactory.defaultInstance().constructParametricType(ArrayList.class, List.class, genericObjectClass);
javaType = TypeFactory.defaultInstance().constructParametricType(Level3.class, javaType);
javaType = TypeFactory.defaultInstance().constructParametricType(Level2.class, javaType);
javaType = TypeFactory.defaultInstance().constructParametricType(Level1.class, javaType);
Level1<genericObject> l1 = objectMapper.readValue(jsonString, javaType);
尝试过的解决方案:
(de)serialising Nested Generics in Jackson
How to use Jackson with Generics
Is Jackson really unable to deserialize json into a generic type?
【问题讨论】:
标签: java json generics jackson nested-generics