【发布时间】:2023-03-11 15:54:01
【问题描述】:
我知道如何使用public T getValue (Class<T> valueType) 将简单的DataSnapshot 对象解析为任何Java 类。但在 Firebase 3.0 之后,我无法将以下数据解析为我的 Java 类,因为它包含一个自定义类型实例,我正在接收 NULL。
注意:同样的逻辑在 Firebase 3.0 之前运行良好。我想是因为现在 Firebase 使用的是 GSON 而不是 JACKSON。如果我错了,请纠正我
数据:
{
"address" : "DHA karachi",
"addresstitle" : "DHA karachi",
"logoimage" : {
"bucketname" : "test2pwow",
"id" : "zubairgroup",
"mediaType" : "image/png",
"source" : 1,
"url" : "https://pwowgroupimg.s3.amazonaws.com/zubairgroup1173.png?random=727"
},
"title" : "zubairghori"
}
Group.java
public class Group {
public String address;
public String addresstitle;
public LogoImage logoimage;
public Group(){}
}
LogoImage.java
public class LogoImage {
public String bucketname;
public String id;
public LogoImage(){}
}
代码如下:
Group group = datasnapshot.getValue(Group.class);
它不会将数据库的LogoImage 部分转换为logoimage 对象。我们总是在 logoimage 对象中检索 null。
【问题讨论】:
-
firebaser here Firebase 不使用 GSON。我们只是在最新版本中删除了对 Jackson 的依赖,以减少我们对 APK 大小的影响。什么部分在这里引起问题?你能展示用这些类读取数据的最小代码吗?
-
我无法使用这行代码将此数据解析为组:
Group group = datasnapshot.getValue(Group.class);它不会将数据库的 LogoImage 部分转换为 logoimage 对象。我们总是在 logoimage 对象中检索 null。 -
我在下面添加了一个非答案,以表明您的代码在我尝试时有效。我实际上只是将您的 JSON 导入我的数据库并将您的类复制到测试项目中。我不确定为什么你没有得到任何结果,而我使用的是相同的代码。 :-/
标签: android json firebase firebase-realtime-database