Warum tritt bei der Konvertierung von JSON von Firebase in Java-Objekte die Fehlermeldung „Failed to bounce to type“ auf?
Firebase verwendet Jackson, um das zu erleichtern Serialisierung von Java-Objekten in JSON und deren Deserialisierung zurück in Java-Objekte. In diesem Tutorial werden verschiedene Ansätze zur Verwendung von Jackson mit Firebase untersucht.
Vollständige Benutzer laden
Um Benutzer von Firebase in Android zu laden, kann man eine Java-Klasse erstellen, die die JSON-Struktur widerspiegelt :
private static class User { String handle; String name; long stackId; // getters and toString methods }
Diese Klasse kann mit einem Listener verwendet werden:
Firebase ref = new Firebase("https://stackoverflow.firebaseio.com/32108969/users"); ref.addListenerForSingleValueEvent(new ValueEventListener() { @Override public void onDataChange(DataSnapshot usersSnapshot) { for (DataSnapshot userSnapshot : usersSnapshot.getChildren()) { User user = userSnapshot.getValue(User.class); System.out.println(user.toString()); } } @Override public void onCancelled(FirebaseError firebaseError) { } });
Benutzer teilweise laden
Wenn nur bestimmte Benutzereigenschaften von sind Bei Interesse kann man die unerwünschten Eigenschaften aus der Java-Klasse weglassen. Dies kann jedoch zu einer Ausnahme „Fehler beim Entprellen des Typs“ führen, da Jackson die ausgelassene Eigenschaft nicht erkennen kann.
Um dieses Problem zu beheben, kann die Annotation @JsonIgnoreProperties verwendet werden, um Jackson anzuweisen, bestimmte Eigenschaften zu ignorieren:
@JsonIgnoreProperties({ "stackId" }) private static class User { String handle; String name; }
Alternativ kann @JsonIgnoreProperties(ignoreUnknown=true) verwendet werden, um alle unbekannten Eigenschaften zu ignorieren.
Benutzer teilweise speichern
Bequeme Methoden können zu Java-Klassen hinzugefügt werden, um deren Funktionalität zu erweitern. Beispielsweise kann eine Methode zum Abrufen des Anzeigenamens des Benutzers hinzugefügt werden:
private static class User { String handle; String name; @JsonIgnore public String getDisplayName() { return getName() + " (" + getHandle() + ")"; } }
Beim Speichern von Benutzern in Firebase sollte die Annotation @JsonIgnore auf die Methode getDisplayName() angewendet werden, um deren Aufnahme in das JSON zu verhindern Ausgabe.
Das obige ist der detaillierte Inhalt vonWarum erhalte ich beim Konvertieren von Firebase JSON in Java-Objekte die Fehlermeldung „Failed to bounce to type'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!