【发布时间】:2019-06-02 19:37:33
【问题描述】:
我想使用 jackson-databind 将 json 反序列化为一个包含其他对象列表的对象。
我正在尝试反序列化以下 json。我有 Class1,它有一个 List<NestedProp>。 Prop2 是一个数组列表。 List<NestedProp> prop2.
类结构 `
class Class1 {
String prop1;
List<NestedProp> prop2;
//setters getters
}
class NestedProp {
String p1;
String p2;
//setters getters
}
`
```
"class1": {
"prop1": "pp",
"prop2": [
{
"nestedProp": [
{
"p1": "127",
"p2": "1"
},
{
"p1": "128",
"p2": "2"
}
]
}
]
}
While deserialisingI get the below exception:
>com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot construct instance of `NestedProp` (although at least one Creator exists): no String-argument constructor/factory method to deserialize from String value ('127')
at [Source: (File); line: 59, column: 7] (through reference chain: java.util.ArrayList[1]->Class1["prop2"]->java.util.ArrayList[0])
List<Class1> testData = objectMapper.readValue(test.json, Class1.class);
【问题讨论】:
-
请编辑问题并向我们展示课程。 --- 提示: 由于
{}大括号有 3 个级别,因此您需要 3 个类(除非您使用Map,但这似乎不太可能)。假设Class1有字段prop1和prop2,而NestedProp有字段p1和p2,那么什么类有字段nestedProp? -
显示
Class1代码 -
@Deapool 我已经添加了类结构。只有2个级别。 prop1 是字符串。
标签: java jackson jackson-databind