Chcę użyć auto-value z firebase 9.2.0+. Mam następujący kod:Jak używać auto-value z firebase 9.2 w Androidzie
@AutoValue
public abstract class Office {
public static Builder builder() {
return new AutoValue_Office.Builder();
}
public abstract double latitud();
public abstract double longitud();
@AutoValue.Builder
public static abstract class Builder {
public abstract Builder latitud(double latitud);
public abstract Builder longitud(double longitud);
public abstract Office build();
}
}
Ale kiedy zrobić, aby wywołać tę Office office = childDataSnapshot.getValue(Office.class);
otrzymuję ten błąd:
com.google.firebase.database.DatabaseException: No properties to serialize found on class com.example.app.model.Office
ktoś ma pomysł dlaczego ja otrzymuję ten błąd i jak go rozwiązać? Czytałem, że baza ogniowa nie używa już do serializacji json. Więc nie jestem pewien, jak określić rodzaj @JsonProperty("latitud")
Użyłem @PropertyName
bez powodzenia.
Próbowałem również zmienić nazwę metody abstrakcyjne jak public abstract double getLatitud();
i po, że błąd jest następny:
java.lang.InstantiationException: Can't instantiate abstract class com.example.app.model.Office
więc nie jestem pewien, jak rozwiązać ten problem.
ROZWIĄZANIE
Dzięki hatboysam i Frank van Puffelen I wreszcie mogli zmierzyć się z tym problemem do następnego rozwiązania.
- stworzyłem FirebaseUtil enum z dwóch metod serializacji i odserializacji obiektów do Firebase podstawie hatboysam odpowiedź i Frank van Puffelen komentarza.
- Tworzę kilka klas
User
iPhone
do testowania. Zależności: Przykład
compile 'com.fasterxml.jackson.core:jackson-annotations:2.8.0' compile 'com.fasterxml.jackson.core:jackson-databind:2.8.0'
Zastosowanie:
User user = FirebaseUtil.deserialize(dataSnapshot, User.class); Map<String, Object> map = FirebaseUtil.serialize(user);
jedno pytanie: jaki jest cel za użyciem Auto-wartość? Za wykonanie Parcelable? –