Vin*_*res 4 java json hibernate jackson
我在父类上有这个配置:
@JsonTypeInfo(
use = JsonTypeInfo.Id.NAME,
include = JsonTypeInfo.As.EXISTING_PROPERTY,
property = "type",
visible = true
)
@JsonSubTypes({
@JsonSubTypes.Type(value = AnalysisViewer.class, name = "ANALYSIS"),
@JsonSubTypes.Type(value = CombinedAnalysisViewer.class, name = "COMBINED"),
@JsonSubTypes.Type(value = SingleSourceViewer.class, name = "SINGLESOURCE"),
@JsonSubTypes.Type(value = SingleSourceGroupViewer.class, name = "SINGLESOURCE_GROUP")
})
Run Code Online (Sandbox Code Playgroud)
并且该类具有以下type属性,我需要在数据库中保留(使用JPA).
public class Viewer {
...
@Column(name = "TP_VIEWER")
@Enumerated(EnumType.STRING)
private ViewerTypeEnum type;
...
}
Run Code Online (Sandbox Code Playgroud)
使用此配置或更改为visible=false,include=JsonTypeInfo.As.PROPERTY我要么在序列化时收到错误,说它不可能写两次相同的属性,或者说错误说我无法在type列中保存空值.
我需要的是在数据库中使用type属性并使用它来教杰克逊的子类型.我尝试了很多不同的配置,我找不到关于在反序列化时保留和填充属性的文档.有人可以帮助我吗?
提前致谢.
小智 10
添加参数visible,以@JsonTypeInfo使之true.默认情况下是false:
@JsonTypeInfo(..., visible = true)
Run Code Online (Sandbox Code Playgroud)
从JsonTypeInfo文档:
定义类型标识符值是否将作为JSON流的一部分传递给反序列化程序(true),或由TypeDeserializer(false)处理和删除的属性.属性对序列化没有影响.
默认值为false,这意味着Jackson处理并从传递给JsonDeserializer的JSON内容中删除类型标识符.
| 归档时间: |
|
| 查看次数: |
2193 次 |
| 最近记录: |