JSArray<dynamic>:List<dynamic>类型不是Map<String, dynamic>Flutter Dart

问题描述 投票:0回答:1

我正在尝试使用 parsedFromJson 和 getDataFromDB future 方法从数据库输出数据,但出现错误并且无法解决。我是一位经验丰富的开发人员,但对 Flutter 很陌生。我以前从未花这么多时间来解决其他技术堆栈中的任何问题

class House_Effects {
  final String? ID;
  final String? Title;
  final DateTime? Date;
 

 House_Effects({required this.ID, required this.Title, required this.Date });

factory House_Effects .fromJson(Map<String, dynamic> json) {
    return House_Effects (
      ID: json['ID'].toString(),
      Title: json['Title'].toString(),
      Date: json['Date']
    );
  }

  Map<String, dynamic> toJson() {
    final Map<String, dynamic> data = new Map<String, dynamic>();
     data['ID'] = this.ID.toString();
    data['Title'] = this.Title;
     data['Date'] = this.Date;
    return data;
  }
}


  List<House_Effects > parsedFromJson(String responseBody)  {
    
   List<dynamic> jsonData = jsonDecode(responseBody);
    
    List<Map<String, dynamic>>? endParsed = [];
     for (int idx = 0; idx < jsonData.length; idx++)
     {
      
     final parsed =  (jsonDecode(responseBody)) as Map<String,dynamic>;  
     
       endParsed.add(parsed);     
     }    
     return   endParsed.map<House_Effects >((json) =>
                                              House_Effects.fromJson(json)).toList();  
  }
  



Future<List<House_Effects>> getDataFromDB() async {

 
     List<House_Effects>   listEffects = [];
   const String bUrl = 'http://17627.9.9.1:4008';
   final response = await http.get(Uri.parse('$bUrl/show'));
  if (response.statusCode == 200) {
         
        listEffects = await parsedFromJson(response.body);   
    
  } else {
      throw Exception('Failed to getdata');
  };   
  return listEffects; 
 }
}

---JSArray:List 类型不是 Map 类型的子类型

颤动飞镖 错误主要来自 final parsed = (jsonDecode(responseBody)) as Map;

flutter dart mapping
1个回答
0
投票

你需要使用演员表。

List<House_Effects> parsedFromJson(String responseBody) {
  final parsed = json.decode(responseBody).cast<Map<String, dynamic>>();
  return parsed
      .map<House_Effects>((json) => House_Effects.fromJson(json))
      .toList();
}
© www.soinside.com 2019 - 2024. All rights reserved.