auto-valueとfirebase 9.2.0+を使いたいです。私は、次のコードを持っている:Androidでfirebase 9.2でauto-valueを使用する方法
@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();
}
}
をしかし、私はOffice office = childDataSnapshot.getValue(Office.class);
これを呼び出すために作るとき、私はこのエラーを取得しています:
com.google.firebase.database.DatabaseException: No properties to serialize found on class com.example.app.model.Office
誰かが、私はこのエラーを取得し、どのようにそれを解決することになっている理由のアイデアを持っていますか?私は、firebaseがもはやjackson
をjsonのシリアル化に使用していないと読んでいます。だから私は@JsonProperty("latitud")
の種類を指定する方法がわかりません@PropertyName
が失敗しました。
私もpublic abstract double getLatitud();
のような抽象メソッドの名前を変更しようと、それ以降のエラーは、次のいずれかです。
java.lang.InstantiationException: Can't instantiate abstract class com.example.app.model.Office
だから私はこの問題を解決する方法がわからないです。私は最終的に次の溶液を用いてこの問題に直面する可能性hatboysamとフランク・バンPuffelenへ
SOLUTION
感謝。
- 私は、シリアル化のための二つの方法でFirebaseUtil enumを作成し、hatboysam答えとフランク・バンPuffelenコメントに基づいてFirebaseのためのオブジェクトをデシリアライズします。
- 私は、テストのためにいくつかのクラスを
User
とPhone
のクラスを作成します。 依存性:
compile 'com.fasterxml.jackson.core:jackson-annotations:2.8.0' compile 'com.fasterxml.jackson.core:jackson-databind:2.8.0'
使用例:
User user = FirebaseUtil.deserialize(dataSnapshot, User.class); Map<String, Object> map = FirebaseUtil.serialize(user);
一つの質問:自動値を使用しての背後にある目的は何であることがどのように見えるの
はここで、readmeファイルからコピーされ、一例ですか?パーセルブルを作るため? –