如何在Flutter中解析JSON并获取第一个对象的alert_description属性值
解决方法
首先明确你返回的JSON层级结构如下:
根响应对象 └── data (第一层,Map类型) └── data (第二层,Map类型) └── data (第三层,数组类型,存储所有告警对象) └── 索引0的元素就是第一个告警对象 └── alert_description 就是你要取的字段
你可以直接按以下方式访问,同时建议加上空安全判断避免数组为空或者字段不存在时报错:
var response = await http.get(Uri.parse(ApiUtil.GET_ALERT), headers: headers); print("here================\n"); var data = json.decode(response.body); // 打印你之前已经取到的第三层data数组 print(data['data']['data']['data']); // 新增:获取第一个对象的alert_description字段 String? firstAlertDesc; // 先判断数组是否存在且不为空 if (data['data']?['data']?['data'] != null && (data['data']['data']['data'] as List).isNotEmpty) { firstAlertDesc = data['data']['data']['data'][0]['alert_description']; // 拿到后可以直接使用,比如打印 print("第一个告警描述:$firstAlertDesc"); } // 注意:你的返回结构体里是code字段,不是status字段,原判断逻辑需要修正 if (data['code'] == 0) { showNotification(data['message'], flp); } else { print("no message"); } return Future.value(true);
另外要注意你原有代码里的状态判断有误:你接口返回的根节点字段是code,成功值为0,不是你写的status == 200,需要同步修改避免逻辑错误。
内容的提问来源于stack exchange,提问作者lucky
相关产品推荐
相关产品推荐

