将json文件读取到班级时遇到了反序列化问题。 当我打电话 mapper.readValue(new FileInputStream(jsonFileName),Response.class);
我遇到以下错误:
[无法将类型ID'a10,b10,c10,d10'解析为[集合类型;类java.util.Set,包含[简单类型,类java.lang.String]]:找不到这样的类
我的Json文件如下所示
{
"name":"response",
"operator":{
"__type":"com.sample.lib.operator.Add",
"values":[
"a10, b10, c10, d10"
]
}
}
我有一个Response类:
public final class Response {
private String name;
private Operator op;
public Response() {
super();
}
public Response(final String name, final Operator op) {
this.name = name;
this.op = op;
}
public String getName() {
return name;
}
public Rule getOperator() {
return op;
}
}
我有一个用于操作员的界面
@JsonTypeInfo(
use = JsonTypeInfo.Id.NAME,
include = JsonTypeInfo.As.PROPERTY,
property = "__type")
@JsonSubTypes({
@JsonSubTypes.Type(value = Add.class, name = "add")
})
public interface Operator {
String getType();
Set<String> getAll();
}
这是运算符的子类型
@JsonPropertyOrder({"__type","all"})
final class Add implements Operator{
@JsonProperty("__type")
private String __type = "add";
@JsonProperty("scope")
private final Set<String> all = new HashSet<>();
public Add() {
super();
}
public Add(final Set<String> list) {
for (String s : list) {
this.all.add(s);
}
}
@Override
public String getType() { return __type; }
@Override
public Set<String> getAll() { return all; } }
}
如果有人能指出我做错了地方,将不胜感激。