【发布时间】:2018-07-17 23:29:27
【问题描述】:
我正在尝试反序列化以下 JSON:
{
"name": "TEST",
"data": [["Toto", true, 42], ["ABC", "DEF", false]]
}
“data”值是 JSON 元素列表(字符串、整数或布尔值)。
我使用具有公共属性的简单 POJO 使其工作:
public class MyDecoder {
public String name;
public List<List<Object>> data;
}
但是现在,我希望我的属性是私有的,所以我使用了构造函数:
public class MyDecoder {
private String name;
private List<List<Object>> data;
public MyDecoder() {
}
@JsonCreator
public MyDecoder(
@JsonProperty("name") String name,
@JsonProperty("data") List<List<Object>> data)
{
this.name = name;
this.data = data;
}
}
但这失败了:
org.codehaus.jackson.map.exc.UnrecognizedPropertyException: 无法识别的字段“数据”(Class XXX.MyDecoder),未标记为 无视
我错过了什么?
我猜它与List<List<Object>> data 有关,因为Jackson 对String name 没有任何问题。
但是,我不明白为什么它在具有公共属性的版本中起作用。
我正在使用杰克逊 2.7.5。
谢谢!
【问题讨论】:
-
也许吧。吸气剂和二传手。 .