You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter如何从JSON对象中提取notelp字段值?

解决JSON数组中提取指定字段的问题

嘿,我来帮你搞定这个问题~你遇到的核心问题是没注意到data字段对应的是一个数组(JSON里用[]包裹的部分),而不是单个对象,所以直接写result['data']['notelp']肯定拿不到值,得遍历数组里的每一项才行。

问题分析

你的原始JSON里data是包含多个对象的数组:

{"msg": "Success", "data": [{"id": "1", "notelp": "0000000000", "user": "no1"}, {"id": "2", "notelp": "1111111111", "user": "no2"}]}

你之前的代码试图直接从data这个数组里取notelp键,这就像对着一篮子苹果直接要“篮子的苹果”,而不是挨个拿出每个苹果一样,肯定行不通。

修正后的代码

这里给你写好可以直接用的Dart代码:

if (response.statusCode == 200) {
  final result = json.decode(response.body);
  // 先取出data数组,确保它是List类型
  final List<dynamic> dataArray = result['data'];
  // 遍历数组,提取每个元素的notelp字段并转成Set
  final Set<String> telpSet = dataArray
      .map((item) => item['notelp'] as String)
      .toSet();
  debugPrint('dataTelp: $telpSet');
}

代码解释

  1. 先从解析后的JSON里取出data数组,存为dataArray。
  2. 使用map方法遍历数组里的每一个对象,把每个对象的notelp字段提取出来。
  3. 最后用toSet()把提取到的列表转换成Set,正好匹配你期望的{"0000000000", "1111111111"}格式。

额外的容错处理(可选)

如果担心data为空,或者某个对象里没有notelp字段,可以加个判空逻辑避免报错:

if (response.statusCode == 200) {
  final result = json.decode(response.body);
  final List<dynamic>? dataArray = result['data'];
  if (dataArray != null) {
    final Set<String> telpSet = dataArray
        .where((item) => item != null && item['notelp'] != null) // 过滤无效数据
        .map((item) => item['notelp'] as String)
        .toSet();
    debugPrint('dataTelp: $telpSet');
  }
}

内容的提问来源于stack exchange,提问作者Mas'ud Al Hafiz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 19:22:54