You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Jackson将抽象类ABC序列化为转义JSON并反序列化

Jackson 抽象子类转义JSON序列化/反序列化需求

抽象类定义

@JsonIgnoreProperties(ignoreUnknown = true)
@JsonTypeInfo(use = JsonTypeInfo.Id.DEDUCTION)
@JsonSubTypes({
        @JsonSubTypes.Type(A.class),
        @JsonSubTypes.Type(B.class),
        @JsonSubTypes.Type(C.class)
})
public abstract class ABC {}

子类实现

public class A extends ABC {
   int attribute1;
   String attribute2;
   // getters and setters follow
}

public class B extends ABC {
   int attribute3;
   // getters and setters follow
}

public class C extends ABC {
   int attribute4;
   String attribute5;
   String attribute6;
   // getters and setters follow
}

序列化/反序列化需求

需要将这些子类对象序列化为转义后的JSON字符串,同时支持反向反序列化:

  • 示例:A类对象的原始JSON结构为:
{
   "attribute1" : 1,
   "attribute2" : "string"
}

序列化后需输出:

"{\"attribute1\":1,\"attribute2\":\"string\"}"

API调用要求

必须保持Jackson默认API调用方式不变:

序列化调用示例

ObjectMapper mapper = // 初始化mapper实例
ABC obj = // 初始化ABC子类对象

mapper.writeValueAsString(obj); // 返回转义后的JSON字符串

反序列化调用示例

ObjectMapper mapper = // 初始化mapper实例
String json = // 对应ABC子类的转义JSON字符串

mapper.readValue(json, ABC.class); // 返回对应的ABC子类对象

额外要求

解决方案需支持两种使用场景:

  • ABC对象作为独立对象使用
  • ABC对象作为其他类的属性使用

内容的提问来源于stack exchange,提问作者Qais Abou Housien

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 08:06:21