gpt4 book ai didi

java - 根据 id 从 DynamoDB 检索项目并转换该项目

转载 作者:行者123 更新时间:2023-12-01 09:51:19 25 4
gpt4 key购买 nike

我在使用 Jackson ObjectMapper 将我的项目转换为“学生”时遇到了一些麻烦。我已经得到了根据前面发送的 id 参数实际获取正确项目的方法。所以这是有效的方法,但不返回任何内容,因为我只是想测试它是否有效。

AWS服务:

public void getStudent(String id){

Table t = db.getTable(studentTableName);

GetItemSpec gio = new GetItemSpec()
.withPrimaryKey("id", id);

Item item = t.getItem(gio);
System.out.println("Student: "+item); // <--- Gives the correct item!

}

但现在我需要它返回一个“学生”,所以它应该返回一个学生而不是 void:

public Student getStudent(String id){

Table t = db.getTable(studentTableName);

GetItemSpec gio = new GetItemSpec()
.withPrimaryKey("id", id);

Item item = t.getItem(gio);

//Problem starts here, unsure of how to do. As is, getS() is underlined as error
Student student = mapper.readValue(item.get("payload").getS(), Student.class);

return student;
}

作为引用,我将添加检索所有学生的工作方法。正如您所看到的,我尝试使用与检索所有学生的方法相同的 mapper.readValue :

public List<Student> getStudents() {

final List<Student> students = new ArrayList<Student>();

ScanRequest scanRequest = new ScanRequest()
.withTableName(studentTableName);

ScanResult result = client.scan(scanRequest);
try {
for (Map<String, AttributeValue> item : result.getItems()) {
Student student = mapper.readValue(item.get("payload").getS(), Student.class);
students.add(student);
}
} catch (Exception e) {
throw new RuntimeException(e);
}

return students;
}

最佳答案

将 item.get("payload").getS() 替换为 "item.getJSON("payload").substring(1)"。

关于java - 根据 id 从 DynamoDB 检索项目并转换该项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37583633/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com