如何处理API返回的对象数组并逐行迭代展示每条记录内容
实现方案
现有代码存在三个可优化点:
- 悬空的
for循环无执行逻辑,属于无效代码可直接删除 - 用
$element[1]按索引取字段的方式不适用于JSON键值对结构,需要改为按tradename键名取值 - 直接将JSON对象数组转
Set会存在类型兼容问题,建议按实际业务字段做去重逻辑
可直接运行的实现代码
// 先做类型强转,确保拿到的是结构正确的JSON对象数组 List<Map<String, dynamic>> me3 = List<Map<String, dynamic>>.from(jsondata["message"]); Set<String> existedTradenames = {}; premiumList.clear(); // 遍历数组逐行处理 for (var element in me3) { // 取对应tradename字段值,做空值兼容 String tradeName = element["tradename"]?.toString() ?? "未知企业"; // 不需要去重可以删掉下方两行去重判断 if (existedTradenames.contains(tradeName)) continue; existedTradenames.add(tradeName); // 每个对象对应新增一个Property实例,单独展示为一行 premiumList.add(Property( propertyName: "Company : $tradeName", propertyLocation: "SSN : 3001245" )); }
如果你的SSN字段也是从JSON对象里取的,直接把propertyLocation的赋值改为element["ssn"]?.toString() ?? "无SSN"即可。
内容的提问来源于stack exchange,提问作者jerome
相关产品推荐
相关产品推荐

