ホームページ  >  記事  >  Java  >  Firebase JSON を Java オブジェクトに変換するときに「タイプへのバウンスに失敗しました」エラーが発生するのはなぜですか?

Firebase JSON を Java オブジェクトに変換するときに「タイプへのバウンスに失敗しました」エラーが発生するのはなぜですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-17 19:44:01213ブラウズ

Why do I get a

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。