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

FlutterFlow自定义Flutter函数解析JSON为自定义类型列表报错求助

FlutterFlow自定义函数解析JSON的修正方案

你的代码存在几个明确错误导致解析失败,以下是修正步骤和正确代码:

错误点排查

  • 多余的jsonDecode调用:FlutterFlow中传入自定义函数的API返回数据通常已经是解码后的Map<String, dynamic>,无需再对jsonMarkers['markers']执行jsonDecode,否则会因对List类型调用解码函数报错。
  • 键名拼写错误:JSON字段是entityId和lng,但你代码里写成了entity_id和ng,导致无法正确取值。
  • 类型缺失:未对动态类型做显式转换,容易引发类型错误。

修正后的代码

List<MapLocationStruct>? createLocationsFromJson(dynamic jsonMarkers) {
/// MODIFY CODE ONLY BELOW THIS LINE
  List<MapLocationStruct> locations = [];
  // 将传入的动态类型转为Map,保证类型安全
  final Map<String, dynamic> data = jsonMarkers as Map<String, dynamic>;
  // 直接取出markers列表,无需再次解码
  final List<dynamic> markers = data['markers'] as List<dynamic>;
  
  markers.forEach((element) {
    // 修正键名:entityId、lng
    MapLocationStruct location = MapLocationStruct(
      entityId: element['entityId'],
      latLng: LatLng(element['lat'], element['lng'])
    );
    locations.add(location);
  });
  return locations;
/// MODIFY CODE ONLY ABOVE THIS LINE
}

额外注意事项

  • 如果API返回的markers可能为null,建议添加非空判断:
    if (data['markers'] == null) return null;
    
  • 确保MapLocationStruct的构造函数参数类型与传入值匹配,比如entityId为int类型时,无需额外转换,Flutter会自动处理。

内容的提问来源于stack exchange,提问作者Abenil

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 20:43:09