Saya memahami Anda ingin mengonversi Map<String, AttributeValue>
menjadi Map<String, Object>
, jadi jawaban @knittl benar jika Anda menginginkan Objek tetapi Anda ingin mendapatkan nilai literal dari setiap bidang alih-alih hanya memasukkan AttributeValue
ke Object
, jika saya memahami Anda dengan benar.
Jadi jika Anda memeriksa kode untuk 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;
...
Anda dapat melihat ada banyak kolom tipe yang terdaftar dan digunakan untuk memaksakan pengetikan. Kami akan kembali ke sini.
Karena Anda mendapatkan ini sebagai Acara Aliran DynamoDB, kami memerlukan kelas model yang dapat kami bicarakan :)
Katakanlah kita memiliki kelas model sederhana ini:
public class Employee {
String name = "John";
int age = 25;
boolean isPermanent = true;
}
Saat Anda membuat/memperbarui catatan model di atas, DynamoDB akan menghasilkan peristiwa yang berisi catatan lama (gambar) dan yang baru (tentu saja ini tergantung pada konfigurasi Anda).
Sekarang kembali ke pemeriksaan tipe:
name
field adalah String
, ini menghasilkan entri kunci name
dan nilai atrbValue.s = "John"
age
bidang adalah int
, ini menghasilkan entri kunci age
dan nilai atrbValue.n = "25"
Bidang isPermanent
adalah boolean
, ini menghasilkan masuknya kunci isPermanent
dan nilai atrbValue.bOOL = true
Jadi Anda dapat melihat tidak ada jalan pintas untuk mengubah Map<String, AttributeValue>
menjadi Map<String, Object>
.
Tetapi Anda dapat melakukan ini:
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());
Lebih lanjut tentang AttributeValue
, lihat dokumentasi AWS.
person
dsharew
schedule
24.03.2021
AttributeValue
sudah menjadiObject
(AttributeValue extends Object
). Apakah Anda memerlukan pemeran atau konversi yang sebenarnya? - person knittl   schedule 16.03.2021Map<String, Object>
? - person knittl   schedule 16.03.2021