首頁 > Java > java教程 > 主體

將 Firebase JSON 轉換為 Java 物件時,為什麼會出現「無法彈回類型」錯誤?

Patricia Arquette
發布: 2024-11-17 19:44:01
原創
212 人瀏覽過

Why do I get a

為什麼在將 JSON 從 Firebase 轉換為 Java 物件時會遇到「無法反彈到型別」?

Firebase 使用 Jackson 來促進將 Java 物件序列化為 JSON 並將其反序列化回 Java 物件。本教學探討了將 Jackson 與 Firebase 結合使用的各種方法。

載入完整使用者

要將使用者從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 時,應在 getDisplayName() 方法上套用 @JsonIgnore 註解,以防止其包含在 JSON 中輸出。

以上是將 Firebase JSON 轉換為 Java 物件時,為什麼會出現「無法彈回類型」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板