21

Firebase に依存している時点で最新バージョンの1.0.2 を使用していますが、pojo を正しく解析するのに問題があります。

問題は、いつでもスキーマを変更できるということですが、これでアプリがクラッシュすることは望ましくありません。

D/AndroidRuntime(14097): VM のシャットダウン W/dalvikvm(14097): threadid=1: キャッチされない例外で終了するスレッド (group=0x40a451f8) E/AndroidRuntime(14097): FATAL EXCEPTION: main E/AndroidRuntime(14097): com .firebase.client.FirebaseException: タイプ E/AndroidRuntime(14097) へのバウンスに失敗しました: com.firebase.client.DataSnapshot.getValue(DataSnapshot.java:213) で

依存関係ツリーを調べると、Firebase は Jackson マッパー 1.9.7 を使用しているため、注釈@JsonIgnoreProperties(ignoreUnknown = true")はオプションではありません。さらに、オブジェクト マッパーはこの Firebase オブジェクトにラップされているため、DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIESプロパティDeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIESを構成できません (Jackson 1.9 以前の場合)。

クラスレベルの注釈として、またはマッパーまたはその他のメカニズムを構成するために、このプロパティを設定する方法はありますか?

最善の解決策は、Firebase 1.0.3 が Jackson 2.0 の使用を開始することですが、これが現在気にかけていることであるかどうかはわかりません。

注: 推移的な Jackson 1.9.7 依存関係を除外し、Jackson 2.0 を追加して、この ignoreUnknown 機能にアクセスできるようにすることを既に考えましたが、市長のバージョンを変更することになるため、実行可能な選択ではないと思います。

4

4 に答える 4

34

アップデート:

他の人が指摘したように、注釈@Excludeは今それを使用する正しい方法です。しかし、Kotlin を使用すると機能しません。コトリン用

    @Exclude @JvmField 
    var data: String? = nil
    //or
    @set:Exclude @get:Exclude 
    var data: String? = nil

アノテーションは生成されたフィールドにのみ適用でき、プロパティには適用できないためです。

古い答え:

一時的なキーワードを使用した場合、GSON から Firebase に来ています。そして、それはFirebaseでも機能します

public transient String data;
于 2016-06-26T10:27:39.913 に答える
15

受け入れられた回答が述べているように、Firebase は Jackson を使用するようになったため、無視したいメソッドに注釈を付けることができます

@JsonIgnore

編集:

Firebase はすべてを変えました。うーん。代わりにこれを使用してください:

@除外

于 2014-12-29T02:29:39.073 に答える