Flutter中如何从JSON列表过滤ID并存储至新列表?
解决从资质信息列表提取ID到新列表的问题
你当前的代码无法实现需求的原因是误用了where方法:where的作用是过滤出符合条件的原列表元素,而你需要的是提取每个元素的id字段并生成新的整数列表,这应该使用map方法来完成映射转换。
正确实现代码
根据你的数据结构,分两种场景给出解决方案:
场景1:使用自定义Model类(如Eligibility)
如果widget.eligibility是自定义Model类的列表(每个实例包含id属性):
List<int> eligibilityIds = []; setState(() { eligibilityIds = widget.eligibility.map((element) => element.id as int).toList(); }); print(eligibilityIds); // 输出: [13, 14, 15]
场景2:直接处理Map类型列表
如果widget.eligibility是未解析的Map列表(直接从JSON转换而来):
List<int> eligibilityIds = []; setState(() { eligibilityIds = widget.eligibility.map((item) => item['id'] as int).toList(); }); print(eligibilityIds); // 输出: [13, 14, 15]
错误代码分析
你原代码中的widget.eligibility.where((element) => element.id)会把element.id当作布尔判断条件(非0的id会被视为true),最终返回的是原列表中所有id非0的元素,而非id值的列表,类型与List<int>不匹配,因此无法实现需求。
内容的提问来源于stack exchange,提问作者Md. Mustafizur Rahman
相关产品推荐
相关产品推荐

