来自服务器的 json 字符串如下所示(简化)
{
"p1":"v1",
"c1":{
"a1":"string1",
"a2":"string2"
}
}
或
{
"p1":"v2",
"c2":{
"b1":"string3",
"b2":"string4"
}
}
是否有一种使用 jackson 来反序列化 json 字符串的方法:
P类包含常见的响应信息(标志,状态代码,状态消息......) C1类和C2类有自己具体的业务数据
class P{
String p1;
}
class C1 extend P{
String a1;
String a2;
}
class C2 extend P{
String b1;
String b2;
}
问题(简化):
{"p1":"v1","c1":{"a1":"string1","a2":"string2"}}
到 C1 类
,
{"p1":"v2","c2":{"b1":"string3","b2":"string4"}}
到 C2 类
最佳答案
是的,您可以使用字段将每个对象转换为特定的类,该字段将指示所提供的基类中的类类型,如下所示
@JsonTypeInfo(
use = JsonTypeInfo.Id.NAME,
include = JsonTypeInfo.As.PROPERTY,
property = "type")
@JsonSubTypes({
@Type(value = Car.class, name = "car"),
@Type(value = Truck.class, name = "truck")
})
public class Vehicle {
private String type; //where type car for Car.class and truck for Truck.class
// fields, constructors, getters and setters
}
关于java - Jackson 通过特定键将 json 反序列化为不同的子类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45561382/