我需要将一些JSON反序列化为Java类。我有以下JSON:
{
"list": [[{
"type": "text",
"subType": "ss"
},
{
"type": "image",
"subType": "text"
}
]]
}
并且我有以下Java类:
public abstract class BaseClass {
public String type;
public String subType;
}
public class Text extends BaseClass {
...
}
public class Image extends BaseClass {
}
并且我需要以这种方式反序列化,如果type
相等image
和subType
相等,text
我需要反序列化为Text
类,否则我需要反序列化为Image
类。
我该怎么做?
您不需要自定义解串器。使用以下注释标记您的BaseClass,并使用ObjectMapper反序列化:
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, property = "type", visible = true)
@JsonSubTypes({@JsonSubTypes.Type(value = Text.class, name = "text"), @JsonSubTypes.Type(value = Image.class, name = "image")
})
public abstract class BaseClass {
public String type;
public String subType;
}
JsonTypeInfo
定义使用type
字段的值作为类型名称。JsonSubTypes
将类型名称与Java类相关联
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句