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
相关产品推荐
相关产品推荐

