Dart 颤振类型错误类型';列表<;动态>';不是类型为';地图<;字符串,动态>;
我正面临着一个奇怪的错误。我正在使用json serialisable 这是我的密码Dart 颤振类型错误类型';列表<;动态>';不是类型为';地图<;字符串,动态>;,dart,flutter,Dart,Flutter,我正面临着一个奇怪的错误。我正在使用json serialisable 这是我的密码 class DivMatches{ final List<Match> matches; DivMatches(this.matches); factory DivMatches.fromJson(Map<String, dynamic> json) => _$DivMatchesFromJson(json); Map<String, dynamic&g
class DivMatches{
final List<Match> matches;
DivMatches(this.matches);
factory DivMatches.fromJson(Map<String, dynamic> json) =>
_$DivMatchesFromJson(json);
Map<String, dynamic> toJson() => _$DivMatchesToJson(this);
}
这是数组的数组
生成错误的代码是
data = body.map((el) => DivMatches.fromJson(el)).toList();
它给出的错误
Exception has occurred.
_TypeError (type 'List<dynamic>' is not a subtype of type 'Map<String, dynamic>')
发生异常。
_TypeError(类型“List”不是类型“Map”的子类型)
这是截图
JSON数据
以下是json数据格式的屏幕截图
更改此行:
final body = json.decode(res.body);
为此:
final body = json.decode(res.body) as List;
这是:
List<DivMatches> data = [];
body.forEach((el) {
final List<Match> sublist = el.map((val) => Match.fromJson(val)).toList();
data.add(DivMatches(sublist));
});
列表数据=[];
车身前部((el){
最终列表子列表=el.map((val)=>Match.fromJson(val)).toList();
data.add(DivMatches(sublist));
});
注意:检查Match.fromJson是否返回匹配对象或映射。您可以使用cast()
:
导入'dart:convert';
void main(){
打印(getScores());
}
班级成绩{
智力得分;
分数({this.Score});
factory Score.fromJson(映射json){
返回分数(分数:json['Score']);
}
}
列出getScores(){
var jsonString=''
[
{“分数”:40},
{“分数”:80}
]
''';
列表分数=jsonDecode(jsonString)
.map((项)=>Score.fromJson(项))
托利斯先生()
.cast();//解决未处理的异常:类型“List”不是类型“List”的子类型
返回分数;
}
不幸的是,同样的问题。您检查了我的上一个答案吗?此行给出错误数据。添加(DivMatches(sublist))
\u TypeError(type'List'不是type'List'的子类型)
我想要一个嵌套的数据被解析。这个应该可以工作:final List sublist=el.map((val)=>Match.fromJson(val)).toList();我现在只是这样使用它,但它一直给我异常发生_TypeError(类型“List”不是类型“List”的子类型)
当我在从FireBase数据库获取时包括相关模型的ID并从ID构建新对象时,这对我来说是有效的。需要一种简单的方法来使用多个模型关系Object.fromJson(),这很有效,谢谢。
List<DivMatches> data = [];
body.forEach((el) {
final List<Match> sublist = el.map((val) => Match.fromJson(val)).toList();
data.add(DivMatches(sublist));
});
import 'dart:convert';
void main() {
print(getScores());
}
class Score {
int score;
Score({this.score});
factory Score.fromJson(Map<String, dynamic> json) {
return Score(score: json['score']);
}
}
List<Score> getScores() {
var jsonString = '''
[
{"score": 40},
{"score": 80}
]
''';
List<Score> scores = jsonDecode(jsonString)
.map((item) => Score.fromJson(item))
.toList()
.cast<Score>(); // Solve Unhandled exception: type 'List<dynamic>' is not a subtype of type 'List<Score>'
return scores;
}