说我有以下课程:
public class Parent {
public int age;
@JsonUnwrapped
public Name name;
}
Run Code Online (Sandbox Code Playgroud)
生成JSON:
{
"age" : 18,
"first" : "Joey",
"last" : "Sixpack"
}
Run Code Online (Sandbox Code Playgroud)
如何将其反序列化为Parent类?我可以使用@JsonCreator
@JsonCreator
public Parent(Map<String,String> jsonMap) {
age = jsonMap.get("age");
name = new Name(jsonMap.get("first"), jsonMap.get("last"));
}
Run Code Online (Sandbox Code Playgroud)
但这也有效地添加@JsonIgnoreProperties(ignoreUnknown=true)
到Parent类,因为所有属性都映射到此处.因此,如果您希望未知的JSON字段引发异常,则必须自己执行此操作.此外,如果地图值可能不是字符串,则必须进行一些手动类型检查和转换.杰克逊有办法自动处理这个案子吗?
编辑:
我可能会疯狂,但这实际上似乎工作,尽管文档中没有明确提到:http://fasterxml.github.io/jackson-annotations/javadoc/2.2.0/com/fasterxml/jackson/annotation/ JsonUnwrapped.html
我很确定它之前对我不起作用.尽管如此,当需要自定义逻辑来反序列化未包装的多态类型时,建议的@JsonCreator方法可能更受欢迎.