私は、public T getValue (Class<T> valueType)
を使用して、任意のJavaクラスに単純なDataSnapshotオブジェクトを解析する方法を知っています。しかし、Firebase 3.0の後には、Javaクラスに対して以下のデータを解析することができません。これは、NULLを受け取るカスタムタイプのインスタンスが含まれているためです。getValue()を使用してDataSnapshotからFirebaseのJavaクラスを解析する
注:Firebase 3.0以前は同じロジックが正常に動作していました。 FirebaseがJACKSONの代わりにGSONを使用しているからだと思います。私が間違っているなら、私を修正してください
DATA:
{
"address" : "DHA karachi",
"addresstitle" : "DHA karachi",
"logoimage" : {
"bucketname" : "test2pwow",
"id" : "zubairgroup",
"mediaType" : "image/png",
"source" : 1,
"url" : "https://pwowgroupimg.s3.amazonaws.com/zubairgroup1173.png?random=727"
},
"title" : "zubairghori"
}
Group.java
public class Group {
public String address;
public String addresstitle;
public LogoImage logoimage;
public Group(){}
}
LogoImage.java
public class LogoImage {
public String bucketname;
public String id;
public LogoImage(){}
}
コード読んでいる:
Group group = datasnapshot.getValue(Group.class);
それはlogoimage
オブジェクトにデータベースのLogoImage
一部をキャストしません。 logoimage
オブジェクトでは常にnullを取得します。
* firebaserはこちら* FirebaseはGSONを使用していません。 APKサイズに与える影響を軽減するために、最新のリリースでジャクソンへの依存を取り除いただけです。どの部分がここで問題を引き起こしていますか?これらのクラスでデータを読み取る最小限のコードを表示できますか? –
このコード行を使用してこのデータをGroupに解析することはできません。 'Group group = datasnapshot.getValue(Group。クラス); ' データベースのLogoImage部分をロゴイメージオブジェクトにキャストしません。私たちは常にlogoimageオブジェクトでnullを取得します。 –
私は試してみるとあなたのコードが動作することを示すために以下の無回答を追加しました。文字通りJSONをデータベースにインポートし、クラスをテストプロジェクトにコピーしました。なぜ私は同じコードを使っているのですが、なぜ結果が得られないのか分かりません。 : -/ –