jackson 将地图转换为对象列表

问题描述 投票:0回答:0

我有以下

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>
,当我试图将它转换为险恶列表时,我有以下错误:

    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
java redis jackson spring-data-redis fasterxml
© www.soinside.com 2019 - 2024. All rights reserved.