为什么在将 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中文网其他相关文章!