Десериализация map в objectMapper

У меня есть сервер, который возращает HashMap<ProductEntity, Integer> при попытке извлечь map путем

TypeReference<HashMap<ProductEntity, Integer>> tr = new TypeReference<HashMap<ProductEntity, Integer>>() {};

productsCartMap = objectMapper.readValue(inputStream, tr);

получаю исключение

com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot find a (Map) Key deserializer for type [simple type, class ua.itea.model.ProductEntity].

Я извлекал стоку из inputStream. Сервер корректно возвращает json мапы. В интернете я нашел решение, что нужно в приватном поле класса объявить map с аннотацией, что я и сделал.

@JsonDeserialize(keyUsing = MyPairDeserializer.class)
private HashMap<ProductEntity, Integer> productsCartMap;

Также объявил класс MyPairDeserializer.

public class MyPairDeserializer extends KeyDeserializer {

    @Override
    public Object deserializeKey(String s, DeserializationContext deserializationContext) throws IOException {
        return null;//описать, как десериализовать ключ map объект ProductEntity, из входной строки:
    }
}

Но дальше не пойму,что в теле метода писать? А может есть и другие способы попроще?


Ответы (0 шт):