ฉันเข้าใจว่าคุณต้องการแปลง 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 เราจึงจำเป็นต้องมีคลาสโมเดลที่เราสามารถพูดถึงได้ :)
สมมติว่าเรามีคลาสโมเดลง่ายๆ นี้:
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