Flutter中如何从list<dynamic>类型的EngName列表仅提取Bangkok值
从List类型的EngName列表提取"Bangkok"
根据你描述的场景,obj['EngName']返回的是一个List<dynamic>,下面分两种常见数据结构给出提取方案:
场景1:列表元素为字符串
如果EngName是直接存储字符串的列表(例如["Bangkok", "OtherCity"]),可以通过匹配取值或索引直接获取:
List<dynamic> engNameList = obj['EngName']; // 精准匹配取值(避免索引越界错误) String bangkok = engNameList.firstWhere( (name) => name == "Bangkok", orElse: () => "" // 无匹配时返回空字符串,可按需调整 ); // 若确定Bangkok在列表固定位置(比如第一个),也可以直接用索引 // String bangkok = engNameList[0]; print(bangkok);
场景2:列表元素为Map对象
如果EngName列表里的元素是Map(例如[{"EngName": "Bangkok"}, {"EngName": "OtherCity"}]),需要先匹配Map中的对应键值:
List<dynamic> engNameList = obj['EngName']; String bangkok = engNameList.firstWhere( (item) => item['EngName'] == "Bangkok", orElse: () => {} )['EngName'] ?? ""; // 空值处理,避免空指针异常 print(bangkok);
先确认数据结构(可选)
如果不确定EngName列表的具体结构,可以先打印元素类型和内容来排查:
List<dynamic> engNameList = obj['EngName']; print("列表类型:${engNameList.runtimeType}"); if (engNameList.isNotEmpty) { print("第一个元素类型:${engNameList[0].runtimeType}"); print("第一个元素内容:${engNameList[0]}"); }
内容的提问来源于stack exchange,提问作者Phuris SOMKAEW
相关产品推荐
相关产品推荐

