JSON を Firebase から Java オブジェクトに変換するときに「入力にバウンスできませんでした」というエラーが発生するのはなぜですか?
Firebase は Jackson を使用して、 Java オブジェクトを JSON にシリアル化し、逆シリアル化して Java オブジェクトに戻します。このチュートリアルでは、Firebase で Jackson を使用するためのさまざまなアプローチを検討します。
完全なユーザーのロード
Firebase から Android にユーザーをロードするには、JSON 構造をミラーリングする Java クラスを作成できます。 :
private static class User { String handle; String name; long stackId; // getters and toString methods }
このクラスはリスナーで使用できます:
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) { } });
部分的にユーザーをロード
特定のユーザー プロパティのみが興味深いことに、Java クラスから不要なプロパティを省略できます。ただし、Jackson が省略されたプロパティを認識できないため、「型のデバウンスに失敗しました」例外が発生する可能性があります。
これを解決するには、@JsonIgnoreProperties アノテーションを使用して、特定のプロパティを無視するように Jackson に指示できます。
@JsonIgnoreProperties({ "stackId" }) private static class User { String handle; String name; }
または、@JsonIgnoreProperties(ignoreUnknown=true) を使用して、不明なプロパティをすべて無視することもできます。
ユーザーの部分的な保存
コンビニエンス メソッドを使用すると、 Java クラスに追加して機能を強化します。たとえば、ユーザーの表示名を取得するメソッドを追加できます。
private static class User { String handle; String name; @JsonIgnore public String getDisplayName() { return getName() + " (" + getHandle() + ")"; } }
ユーザーを Firebase に保存するときは、JSON に含まれないように @JsonIgnore アノテーションを getDisplayName() メソッドに適用する必要があります。出力。
以上がFirebase JSON を Java オブジェクトに変換するときに「タイプへのバウンスに失敗しました」エラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。