為什麼在將 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中文網其他相關文章!