Джексон конвертирует карту в список объектов
у меня есть нижеSinister
сущность
@Document
@Getter
@Setter
@ToString
@AllArgsConstructor
@NoArgsConstructor
@Builder(toBuilder = true)
@JsonInclude(JsonInclude.Include.NON_EMPTY)
public class Sinister {
....
}
public String on(FindSinister query) {
final Map<Object, Object> hashEntries = redisTemplate.opsForHash().entries(Sinister.class.getSimpleName());
final List<Object> allValuesFromHash = new ArrayList<>(hashEntries.values());
if (CollectionUtils.isNotEmpty(allValuesFromHash)) {
final JavaType targetType = objectMapper.getTypeFactory().constructCollectionType(List.class, Sinister.class);
final List<Sinister> sinisters = objectMapper.readValue(objectMapper.writeValueAsString(allValuesFromHash), targetType);
}
....
}
У меня есть описанный выше метод, когда я получаю список объектов из Redis, функцияentries
вернутьMap<Object, Object>
, когда я попытался преобразовать его в List of Sinister, у меня возникла следующая ошибка:
com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot construct instance of `Sinister` (although at least one Creator exists): no String-argument constructor/factory method to deserialize from String value ('Sinister')
at [Source: (StringReader); line: 1, column: 56495] (through reference chain: java.util.ArrayList[85])' and exception = 'null'
java.lang.reflect.UndeclaredThrowableException