У меня есть ServerEndpoint, который будет получать разные форматы JSON. Поскольку нам разрешен только один обработчик сообщений для каждого типа сообщения, мой единственный декодер должен будет преобразовать сообщение в соответствующие объекты Java.
В моем декодере я пытаюсь преобразовать полученное сообщение либо в SubClassA, либо в SubClassB (который реализует тот же интерфейс), используя класс ObjectMapper. Класс ObjectMapper имеет метод readValue, для которого требуется тип, с которым я пытаюсь сопоставить json, и выдает исключение, когда он не может преобразовать в указанный тип.
В настоящее время я расшифровываю его следующим образом, но это не очень элегантно.
@Override
public Message decode(String message) throws DecodeException {
ObjectMapper mapper = new ObjectMapper();
try {
SubclassA obj = mapper.readValue(message, SubclassA .class);
return obj;
} catch (IOException e) {
}
try {
SubclassB obj = mapper.readValue(message, SubclassB .class);
return obj;
} catch (IOException e) {
}
throw new DecodeException(message, "Failed to decode message.");
}
Как лучше всего декодировать строку JSON в соответствующий объект Java с помощью ObjectMapper?