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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 04:35:02