Я столкнулся с проблемой десериализации при чтении моего файла json в мой класс.Когда я вызываю mapper.readValue (новый FileInputStream (jsonFileName), Response.class);
, я получаю следующую ошибку:
[Не удалось разрешить идентификатор типа '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"
]
}
}
У меня естьКласс ответа:
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; } }
}
Это будет очень ценитьсяесли кто-нибудь может указать мне, где я сделал неправильно.