假设我有两个类:
public class Super {
@JsonView(SpecialCaseView.class)
@JsonProperty("name")
public String getDisplayName() {
return "super name";
}
}
和
public class Duper extends Super {
private String name = "John Smith";
public String getName() {
return name;
}
}
当我对Duper
对象进行正常序列化时(例如,使用new ObjectMapper().writerWithView(ADifferentView.class).writeValueAsString(new Duper())
),我希望得到
{
"name": "John Smith"
}
相反,我一无所获。这似乎是因为超级班的名字"财产首先被捡起,但杰克逊因为具体的观点而忽略了它。
这是一个错误吗?
如果没有,有什么方法可以解决这个问题,或者至少是一种检测方法,或者收到警告?
答案 0 :(得分:0)
ObjectMapper mapper = new ObjectMapper();
String json = mapper.writeValueAsString(new Duper());
System.out.println(json);
结果是
{"name":"super name"}
如果将 @JsonView 放在子类中的 getName()方法中,您将获得所需的内容。
@JsonView(SpecialCaseView.class)
public String getName() {
return name;
}
结果
{"name":"John Smith"}