Я понимаю, что вы хотите преобразовать Map<String, AttributeValue>
в Map<String, Object>
, поэтому то, что ответил @knittl, является правильным, если вам нужен Object, но вы хотели получить буквальное значение каждого поля вместо простого преобразования AttributeValue
в Object
, если я правильно вас понял.
Итак, если вы проверяете код для AttributeValue
:
public class AttributeValue implements Serializable, Cloneable {
private String s;
private String n;
private ByteBuffer b;
private List<String> sS;
private List<String> nS;
private List<ByteBuffer> bS;
private Map<String, AttributeValue> m;
private List<AttributeValue> l;
private Boolean nULLValue;
private Boolean bOOL;
...
Вы можете видеть, что перечислено много полей типа, и они используются для принудительного ввода. Мы еще вернемся к этому.
Поскольку вы получаете это как событие DynamoDB Stream, нам нужен класс модели, о котором мы можем поговорить :)
Допустим, у нас есть этот простой класс модели:
public class Employee {
String name = "John";
int age = 25;
boolean isPermanent = true;
}
Когда вы создаете / обновляете запись указанной выше модели, DynamoDB генерирует событие, которое содержит старую запись (изображение) и новую (это, конечно, зависит от вашей конфигурации).
Теперь вернемся к проверке типа:
name
поле равно String
, это приведет к вводу ключа name
и значению atrbValue.s = "John"
age
в поле int
, это приведет к вводу ключа age
и значения atrbValue.n = "25"
Поле isPermanent
равно boolean
, в результате вводится ключ isPermanent
и значение atrbValue.bOOL = true
Итак, вы можете видеть, что нет ярлыка для преобразования Map<String, AttributeValue>
в Map<String, Object>
.
Но вы можете это сделать:
Map<String, Object> result = new HashMap<String, Object>();
AttributeValue defaultValue = new AttributeValue();
result.put("name", image.getOrDefault("name", defaultValue).getS());
result.put("age", Integer.valueOf(image.getOrDefault("age", defaultValue).getN()));
result.put("isPermanent", image.getOrDefault("isPermanent", defaultValue).getBOOL());
Подробнее о AttributeValue
см. в документации AWS.
person
dsharew
schedule
24.03.2021
AttributeValue
уже являетсяObject
(AttributeValue extends Object
). Вам нужен актерский состав или фактическое преобразование? - person knittl   schedule 16.03.2021Map<String, Object>
? - person knittl   schedule 16.03.2021