【发布时间】:2021-06-21 04:08:49
【问题描述】:
我在 Jackson 中使用了一个 subType 属性,我想在反序列化 json 时使用这个属性。
package com.gaosoft.ai.kg.commons.sphinx.strategy;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonSubTypes;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
import com.sankuai.ai.kg.commons.sphinx.model.FAQRecord;
import com.sankuai.ai.kg.commons.sphinx.model.FAQRequest;
import org.springframework.beans.factory.BeanFactory;
import java.io.Serializable;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@JsonTypeInfo(
use = JsonTypeInfo.Id.NAME,
property = "strategyType"
)
@JsonSubTypes({
@JsonSubTypes.Type(value = StrategyEmpty.class, name = "empty"),
@JsonSubTypes.Type(value = StrategyNormal.class, name = "normal"),
@JsonSubTypes.Type(value = StrategyDummy.class, name = "dummy")
}
)
public abstract class Strategy implements Serializable {
private String strategyName;
private String strategyType;
private Map<String, Object> args = new HashMap<>();
public String getStrategyType() {
return strategyType;
}
public void setStrategyType(String strategyType) {
this.strategyType = strategyType;
}
public Map<String, Object> getArgs() {
return args;
}
public void setArgs(Map<String, Object> args) {
this.args = args;
}
public String getStrategyName() {
return strategyName;
}
public void setStrategyName(String strategyName) {
this.strategyName = strategyName;
}
public abstract void init(BeanFactory beanFactory);
public abstract List<FAQRecord> fetchFAQ(FAQRequest request);
}
就像我的代码所说,抽象类 Strategy 有 3 个子类型,我想在 strategyType 属性中保留子类类型名称。 这样使用jackson的时候有没有办法填充strategyType?
(对不起我的英语不好)
【问题讨论】: