Redis не поддерживает его на данный момент. Однако есть способ сделать это, кроме rejson
.
Вы можете преобразовать его в JSON, сохранить в Redis и получить. Следующие служебные методы, которые я использую в Джексоне.
Чтобы преобразовать объект в строку:
public static String stringify(Object object) {
ObjectMapper jackson = new ObjectMapper();
jackson.setSerializationInclusion(JsonSerialize.Inclusion.NON_NULL);
try {
return jackson.writeValueAsString(object);
} catch (Exception ex) {
LOG.log(Level.SEVERE, "Error while creating json: ", ex);
}
return null;
}
Пример: stringify(obj);
Чтобы преобразовать строку в объект:
public static <T> T objectify(String content, TypeReference valueType) {
try {
ObjectMapper mapper = new ObjectMapper();
mapper.configure(Feature.WRITE_DATES_AS_TIMESTAMPS, false);
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ss.SSS");
dateFormat.setTimeZone(Calendar.getInstance().getTimeZone());
mapper.setDateFormat(dateFormat);
return mapper.readValue(content, valueType);
} catch (Exception e) {
LOG.log(Level.WARNING, "returning null because of error : {0}", e.getMessage());
return null;
}
}
Пример: List<Object> list = objectify("Your Json", new TypeReference<List<Object>>(){})
Вы можете обновить этот метод согласно вашему требованию. Я уверен, вы знаете, как добавить и обновить в Redis.