使用 class 元数据序列化 JSON
Serializing JSON with class metadata
我用过 Gson 和 Jackson,它们都提供了一种处理多态性的方法。例如,对于 Jackson,您需要使用 @JsonSubTypes
声明 class 并添加您拥有的每个 @JsonSubTypes.Type
。类似的事情发生在 Gson 身上。
我的问题是是否有一个选项可以让它像 MongoDB 序列化数据一样工作。它会自动添加一个 _class
元数据字段。使用此方法,您无需手动注册您创建的每个子类型。
可能吗?
你可以用 jackson 来实现:
@JsonTypeInfo(use = Id.CLASS, include = As.PROPERTY, property = "_class")
public abstract class AbstractModel {
}
public class ModelA extends AbstractModel {
}
...
mapper.writeValue(System.out, new ModelA());
输出:
{
"_class" : "demo.ModelA"
}
这样您就不必为添加的所有类型添加 json 子类型。
我用过 Gson 和 Jackson,它们都提供了一种处理多态性的方法。例如,对于 Jackson,您需要使用 @JsonSubTypes
声明 class 并添加您拥有的每个 @JsonSubTypes.Type
。类似的事情发生在 Gson 身上。
我的问题是是否有一个选项可以让它像 MongoDB 序列化数据一样工作。它会自动添加一个 _class
元数据字段。使用此方法,您无需手动注册您创建的每个子类型。
可能吗?
你可以用 jackson 来实现:
@JsonTypeInfo(use = Id.CLASS, include = As.PROPERTY, property = "_class")
public abstract class AbstractModel {
}
public class ModelA extends AbstractModel {
}
...
mapper.writeValue(System.out, new ModelA());
输出:
{
"_class" : "demo.ModelA"
}
这样您就不必为添加的所有类型添加 json 子类型。