将 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

如何将来自 Firebase 的查询快照转换为不同的对象?

解决一堆承诺时出现 Firebase 错误:无法将未定义或 null 转换为对象

将数据框转换为rec数组(将对象转换为字符串)