Flutter中Series类seasons列表无法反序列化填充的解决问询
解决Series类seasons字段无法正确填充的问题
问题根源是自动生成的序列化代码中,seasons字段没有将API返回的JSON对象转换为Season实例,只是直接赋值了原始JSON数组。按以下步骤修复:
1. 确保Season类配置正确的序列化注解
首先检查Season类是否正确实现了JSON序列化:
import 'package:json_annotation/json_annotation.dart'; part 'season.g.dart'; @JsonSerializable() class Season { @JsonKey(name: 'air_date') String? airDate; @JsonKey(name: 'episode_count') int episodeCount; int id; String name; String overview; @JsonKey(name: 'poster_path') String? posterPath; @JsonKey(name: 'season_number') int seasonNumber; @JsonKey(name: 'vote_average') num voteAverage; Season({ this.airDate, required this.episodeCount, required this.id, required this.name, required this.overview, this.posterPath, required this.seasonNumber, required this.voteAverage, }); factory Season.fromJson(Map<String, dynamic> json) => _$SeasonFromJson(json); Map<String, dynamic> toJson() => _$SeasonToJson(this); }
- 用
@JsonKey注解映射API返回的蛇形命名字段到Dart的驼峰命名字段 - 确保包含
part 'season.g.dart'和对应的fromJson/toJson工厂方法
2. 重新生成序列化代码
删除现有的series.g.dart和season.g.dart文件(或直接用命令覆盖),在终端运行:
flutter pub run build_runner build --delete-conflicting-outputs
3. 验证生成的代码
重新生成后,Series类的_$SeriesFromJson方法中seasons字段的转换逻辑会自动变为:
seasons: (json['seasons'] as List<dynamic>) .map((e) => Season.fromJson(e as Map<String, dynamic>)) .toList(),
这样就能将API返回的每个season JSON对象转换为Season实例,正确填充到列表中。
内容的提问来源于stack exchange,提问作者Ballazx
相关产品推荐
相关产品推荐

