我在杰克逊序列化方面遇到了一些问题。
我只想添加属性值类型的字段。
似乎只是忽略了PackageInfo注释。
package somepackage.settings.dto;
import com.fasterxml.jackson.annotation.JsonSubTypes;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
import java.util.Date;
public class SettingsItemRequest {
private String key;
@JsonTypeInfo(
use = JsonTypeInfo.Id.NAME,
include = JsonTypeInfo.As.EXTERNAL_PROPERTY,
property = "type",
visible = true
)
@JsonSubTypes(
value = {
@JsonSubTypes.Type(value = String.class, name = "string"),
@JsonSubTypes.Type(value = Number.class, name = "number"),
@JsonSubTypes.Type(value = Boolean.class, name = "boolean"),
@JsonSubTypes.Type(value = Date.class, name = "date")
}
)
private Object value;
private String type;
public String getKey() {
return key;
}
public void setKey(String key) {
this.key = key;
}
public Object getValue() {
return value;
}
public void setValue(Object value) {
this.value = value;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
}
无论我做什么,结果都保持不变,在结果json中属性类型为null(或者如果我删除属性type
,则为null)。
提前感谢您的回答!
答案 0 :(得分:0)
在类似的用例中,我实现了以下内容。子类在构造函数中设置type属性。 同样从关注点分离的角度来看,如果每个专用类型都有一个子类,则每个类都可以在构造函数中设置类型。