将 Firebase 数据对象转换为数组
Posted
技术标签:
【中文标题】将 Firebase 数据对象转换为数组【英文标题】:Convert Firebase Data Object to Array 【发布时间】:2021-12-03 23:47:19 【问题描述】:我通过 task.getResult().getValue()
从 Firebase 实时数据库中获取数据。它看起来像:
jyIibta0UWaRF2=Name=Value1, Surname=Value2,
Oy8r5SEYacKKM2=Name=Value3, Surname=Value4
如何将其转换为数组。所以我可以通过它的索引找到一个项目。 喜欢:
data[1][1]; //Must return "Surname=Value4"
【问题讨论】:
【参考方案1】:要将对象转换为数组,您可以执行以下操作:
const obj =
jyIibta0UWaRF2: Name: "Value1", Surname: "Value2",
Oy8r5SEYacKKM2: Name: "Value3", Surname: "Value4"
let data = [];
Object.keys(obj).forEach((key) =>
data.push(["Name="+obj[key].Name, "Surname="+obj[key].Surname]);
);
console.log(data[1][1]);
但由于您提到这来自 Firebase 实时数据库,我建议从那里学习导航 DataSnapshot
类。给定 snapshot
与您显示的结构,您可以使用以下命令进行导航:
for (DataSnapshot child: snapshot.getChildren())
Log.d("Firebase", child.getKey()); // "jyIibta0UWaRF2", "Oy8r5SEYacKKM2"
Log.d("Firebsae", child.child("Surname").getValue(String.class); // "Value2", "Value4"
这使用两种方法来导航DataSnapshot
中的数据:
getChildren()
遍历所有子项/属性。
如果您知道所需的密钥/名称,可以通过child(...)
访问它。
并检索数据:
使用属性的数据类型调用getValue(...)
(在本例中为String.class
。
【讨论】:
以上是关于将 Firebase 数据对象转换为数组的主要内容,如果未能解决你的问题,请参考以下文章
无法将字符串转换为数据类对象 - Firebase 实时数据库 [重复]
Angular Firebase将Observable转换为普通对象以在组件内使用数据
com.google.firebase.database.DatabaseException:无法将 java.lang.String 类型的对象转换为数据类对象 KOTLIN