0

Jackson ObjectMapper を使用してアイテムを「Student」に変換するのに少し問題があります。フロントから送信された id-parameter に基づいて、実際に適切なアイテムを取得する方法を取得しました。これは機能するメソッドですが、機能するかどうかをテストしたかっただけなので、何も返しません。

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!

}

しかし、今は「Student」を返す必要があるため、void ではなく Student を返す必要があります。

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;
}
4

2 に答える 2

1

item.get("payload").getS() を "item.getJSON("payload").substring(1)" に置き換えます。

于 2016-06-02T10:06:35.197 に答える
0

私はそれを考え出した。これが私にとって正しい方法です:

public Student getStudent(String id) throws JsonParseException, JsonMappingException, IOException  {

    Table t = db.getTable(studentTableName);

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

    Item item = t.getItem(gio);

    Student student = mapper.readValue(StringEscapeUtils.unescapeJson(item.getJSON("payload").substring(1)), Student.class);

    return student;

}
于 2016-06-03T04:04:22.080 に答える