Olegatorapp
@Olegatorapp
Java/Android dev

Как десериализовать объект в Redisson Codec?

Запись в базу реализуется через Redisson. Всё это помечено следующим образом:
User.class
public class User implements Serializable {

    private static final long serialVersionUID = -960024560523175889L;
    @JsonProperty("1")
    public String id;
    @JsonProperty("2")
    public long lastRequest = 0L;
    @JsonProperty("3")
    public String lastRequestDate = "";
    //    public long lastCookieMatching = 0L;
    @JsonProperty("4")
    public HashMap<String, Long> cookieMatchingTimes = new HashMap<>();
    @JsonProperty("5")
    private boolean needToSave = false;
    @JsonProperty("6")
    private HashMap<String, Integer> dailyActions = new HashMap<>();


В базе лежит в таком виде:
1) "\"ud_81c277fbc5f228ee221576e0558d6ffe\""
2) "\x00\x00\x00\x00\x00\x00\x00\x00\xb3\x00\x00\x00\x00\x00\x00\x00{\"@class\":\"delivery.containers.User\",\"1\":\"81c277fbc5f228ee221576e0558d6ffe\",\"2\":0,\"3\":\"2018-09-19\",\"4\":{\"@class\":\"java.util.HashMap\"},\"5\":false,\"6\":{\"@class\":\"java.util.HashMap\"}}"

Проблема заключается в том, что теперь, если я запускаю вторую версию проекта, где пакет для User переместился, то уже не получается десериализовать его. Ошибка:
Caused by: com.fasterxml.jackson.databind.JsonMappingException: Unexpected token (END_OBJECT), expected FIELD_NAME: missing property '@class' that is to contain type id (for class java.lang.Object)

Кодек для конфига Redisson использую - MsgPackJacksonCodec.

Пробовал ещё маркировать класс аля такого, но результат не дало совсем:
@JsonTypeInfo(use = Id.MINIMAL_CLASS,  include = JsonTypeInfo.As.PROPERTY, property = "type")
@JsonSubTypes.Type(value = User.class, name = ".User")
public class User implements Serializable {
  • Вопрос задан
  • 125 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

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