У меня есть приложение, которое хранит некоторые данные в DynamoDB, используя Jackson для сортировки моего сложного объекта в JSON.
Например, объект, который я сортирую, может выглядеть так:
private String aString;
private List<SomeObject> someObjectList;
Где SomeObject может выглядеть так:
private int anInteger;
private SomeOtherObject;
и SomeOtherObject может выглядеть так:
private long aLong;
private float aFloat;
Это хорошо, что объект не сортируется без проблем и хранится в DB как строка JSON.
Когда придет время для извлечения данных из DynamoDB, Джексон автоматически извлекает JSON и преобразует его обратно... ЗА ИСКЛЮЧЕНИЕМ, что 'someObjectList' возвращается как List<LinkedHashMap>
не как List<SomeObject>
! Это стандартное поведение для Джексона, это не ошибка, что это происходит.
Итак, теперь это приводит к проблеме. Моя база кода думает, что имеет дело с List<SomeObject>
, но реальность такова, что ее обработка List<LinkedHashMap>
! Мой вопрос в том, как вернуть LinkedHashMap в "SomeObject" . Очевидно, что это ручной процесс, но я имею в виду, что я даже не могу извлечь значения.
Если я это сделаю:
for (LinkedHashMap lhm : someObjectList) {
// Convert the values back
}
Я получаю ошибку компиляции, сообщающую мне, что someObjectList имеет тип "SomeObject" , а не LinkedHashMap.
Если я это сделаю:
for (SomeObject lhm : someObjectList) {
// Convert the values back
}
Я получаю ошибку времени выполнения, сообщающую мне, что LinkedHashMap не может быть передан в "SomeObject" .