Flutter中如何将Firebase实时数据库数据转为JSON格式并获取多数据
解决Firebase Realtime Database获取多条数据并转为JSON的问题
1. 调整数据库引用
你当前的引用指向test/int单个子节点,只能拿到单条数据。要获取多条数据,需将引用上移至test节点,这样就能获取该节点下的所有子数据:
DatabaseReference ref = FirebaseDatabase.instance.ref().child('UsersData/$userDataUID/test');
2. 将快照数据转为Map并生成JSON
在StreamBuilder中,当快照有数据时,可将snapshot.value强制转换为Map<dynamic, dynamic>,既可以直接提取单个字段,也能通过jsonEncode转为JSON格式字符串:
// 先导入dart:convert包 import 'dart:convert'; StreamBuilder( stream: ref.onValue, builder: (context, snapshot) { if (snapshot.hasData && snapshot.data!.snapshot.value != null) { // 转换为Map类型 Map<dynamic, dynamic> testData = snapshot.data!.snapshot.value as Map<dynamic, dynamic>; // 提取单个字段数据 debugPrint('int字段值: ${testData['int']}'); debugPrint('string字段值: ${testData['string']}'); // 转换为JSON字符串 String jsonData = jsonEncode(testData); debugPrint('JSON格式数据: $jsonData'); } return const CircularProgressIndicator(); }, )
3. 补充说明
- 必须导入
dart:convert包才能使用jsonEncode方法; - 如果
test节点下新增其他子节点,无需修改代码,直接通过Map键名即可提取对应数据。
内容的提问来源于stack exchange,提问作者Harris Shah
相关产品推荐
相关产品推荐

