@MuffinLover

Jackson как сериализовать sealed класс в xml?

spoiler

public abstract sealed class ServerMessage implements Serializable
permits ServerMessage.NewMessage {
public static final XStream xStream = new XStream();
private final ErrorType errorType;

protected ServerMessage(ErrorType errorType) {
this.errorType = errorType;
}


public ErrorType getErrorType() {
return errorType;
}

public enum ErrorType {
ERROR, SUCCESS
}

public static final class NewMessage extends ServerMessage {
private final TextMessage message;

public NewMessage(TextMessage message) {
super(ErrorType.SUCCESS);
this.message = message;
}

public TextMessage getMessage() {
return message;
}
}

}

Есть вот такой sealed класс
Как сериализовать и десериализовать такой класс через jackson?
Еще чтобы root tag был равен значению ErrorType в xml формате
Пытался просто
xmlMapper.writeValueAsString(msg);
 var xmlString = "<NewMessage><message><name>1</name><text>asdasd</text></message></NewMessage>";
 ServerMessage msg = xmlMapper.readValue(xmlString, ServerMessage.class);


Такая ошибка
spoiler
Such an errorjackson.databind.exc.MismatchedInputException: Cannot deserialize value of type org.example.ServerMessage$ErrorType from Object value (token JsonToken.FIELD_NAME)
  • Вопрос задан
  • 102 просмотра
Пригласить эксперта
Ответы на вопрос 1
xez
@xez Куратор тега Java
TL Junior Roo
Абстрактный класс нельзя инстанцировать
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы