У меня есть абстрактный класс PluginTemplate
, унаследованный от 3 дочерних классов
PluginTemplateA, PluginTemplateB, PluginTemplateC
.
У меня есть другой класс, в котором есть карта со списком PluginTemplate.
@JsonDeserialize(using = PluginDeserializer.class)
public class PluginContainer {
// map stores enum to template list mapping, enum can be used to identify template type
Map<PluginTemplateEnum, List<PluginTemplate>> pluginTemplatesList;
other variables....
}
Я отправляю объект PluginContainer по почтовому запросу в другой сервис, который использует RestController
@RequestMapping(value = "/plugin/generateDetails", method = RequestMethod.POST, produces = "application/json")
@ResponseBody
public String generateDetails(@PathVariable Long interfaceId, @RequestBody List<PluginContainer> containers) throws Exception {
// other code
}
Я знаю, что для отправки json мне понадобится специальный десериализатор json для абстрактного класса PluginTemplate.
Я начал писать десериализатор json, подобный этому
public class PluginDeserializer extends JsonDeserializer<PluginContainer> {
@Override
public PluginContainer deserialize(JsonParser jp, DeserializationContext context) throws IOException, JsonProcessingException {
// what should I write here
}
}
Как определить тип PluginContainer с помощью значения ключа Map и соответствующим образом десериализовать его в этом методе ,