如何将Firebase Realtime Database返回的数据对象转换为可索引数组
Firebase Realtime Database 返回对象转二维数组方案
你从task.getResult().getValue()拿到的是嵌套键值对结构,顶层key为Firebase生成的唯一节点ID,子节点为用户属性,按以下步骤转换即可满足索引查询需求:
1. 类型确认
原始返回值本质是嵌套Map/对象结构,可直接强转为对应类型处理。
2. 代码实现
Android Java 环境
// 强转原始返回值为嵌套Map Map<String, Map<String, Object>> rawData = (Map<String, Map<String, Object>>) task.getResult().getValue(); // 提取所有用户属性为列表 List<Map<String, Object>> userList = new ArrayList<>(rawData.values()); // 初始化二维数组 String[][] data = new String[userList.size()][2]; for (int i = 0; i < userList.size(); i++) { Map<String, Object> user = userList.get(i); // 固定属性顺序,保证索引对应关系稳定 data[i][0] = "Name=" + user.get("Name"); data[i][1] = "Surname=" + user.get("Surname"); }
Web JavaScript 环境
const rawData = task.getResult().getValue(); // 直接通过map批量转换为二维数组,固定属性顺序 const data = Object.values(rawData).map(user => [ `Name=${user.Name}`, `Surname=${user.Surname}` ]);
3. 效果验证
转换完成后调用data[1][1]即可直接返回Surname=Value4。
注意:不要直接遍历子节点属性生成数组,不同运行环境下对象属性遍历顺序不固定,手动指定属性取值顺序可保证索引对应关系稳定。
内容的提问来源于stack exchange,提问作者Oleh Prukhnytskyi
相关产品推荐
相关产品推荐

