首页  >  文章  >  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 对象。本教程探讨了将 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn