Ich bin neu in der riesigen Welt des Backend, also einfach nur mit mir. Ich habe ein paar Probleme mit der Verwandlung meines Gegenstandes in einen "Student" mit Jackson ObjectMapper. Ich habe die Methode bekommen, das richtige Item basierend auf dem ID-Parameter von vorne zu bekommen. Also das ist die Methode, die funktioniert, aber nichts zurückgibt, weil ich nur testen wollte, ob es funktioniert.Abrufen eines Elements aus DynamoDB basierend auf ID und Umwandeln des Elements
AwsService:
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!
}
Aber jetzt brauche ich es einen "Student" zurückzukehren, so statt Leere, sollte es einen Student zurück:
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;
}
nur als Referenz Ich werde füge meine Arbeitsmethode zum Abrufen aller Schüler hinzu. So wie Sie sehen können, habe ich versucht, das gleiche mapper.readValue wie in dem Verfahren für die Beschaffung von allen Studenten zu verwenden.
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;
}
ersetzen item.get ("payload") gets() mit "item.getJSON (" payload ") und versuchen, wie es geht. Substring (1).". Hoffe alle Attribute Namen in Dynamodb und Student-Klasse entspricht! Andernfalls können Sie einen anderen Fehler erhalten. – notionquest
Okay, das hilft! Es druckt die richtigen Daten in der Konsole, aber mit '\' dazwischen. Fehlercode 92 wie folgt: [link] (http://yuluer.com/page/dggeggjd-unexpected-character-code-92-in-jackson.shtml) Ich habe versucht, escapeJson für meine "Schüler", gibt aber unterstrichen Fehler bei die EscapeJson. Irgendwelche Ideen? – Alex
Ich würde mir keine Gedanken über das Escape-Zeichen in der Konsolenausgabe machen, da es eine Standardmethode zum Drucken der JSON-Zeichenfolge ist. Das Hauptziel besteht darin, das Student-Objekt mit allen aufgefüllten Werten zurückzugeben. Als Alternative können Sie das Student-Objekt object.toString() drucken, das die Daten ohne Escapezeichen ausgibt. Bitte akzeptieren Sie die Antwort, wenn es Ihr ursprüngliches Problem gelöst hat. – notionquest