Flutter中如何遍历对象数组获取数组内对象的id字段值
实现方法
你当前代码里json.decode(json.encode(data.body))属于冗余操作,http.get返回的response.body本身就是JSON格式字符串,直接传入json.decode即可完成解析,不需要额外做一次encode。
你打印得到的[{"id":"168"}]解析后是Dart的List类型,列表中每个元素是存储键值对的Map类型,对应你要的id字段可以通过以下两种方式获取:
- 当你确定接口返回的列表永远非空、且目标id就在第一个元素时,直接通过下标取值即可:
Future ppp() async { var url ='my url here'; final response = await http.get(Uri.parse(url)); return response; } var data = await ppp(); // 直接解析响应体,去掉多余的encode步骤 List<dynamic> resultList = json.decode(data.body); // 判空避免越界报错 if(resultList.isNotEmpty){ String idValue = resultList[0]['id']; // 如果需要整数类型的168,做一次类型转换即可 int idNum = int.parse(idValue); print(idValue); // 输出 168 }
- 当列表可能包含多个元素、需要遍历匹配目标id时,使用循环遍历列表即可:
List<dynamic> resultList = json.decode(data.body); for(Map<String, dynamic> item in resultList){ // 可以在这里加判断逻辑筛选符合条件的项 String currentId = item['id']; print(currentId); // 单元素场景下直接输出168 }
内容的提问来源于stack exchange,提问作者Michael Ng'ang'a Njoroge
相关产品推荐
相关产品推荐

