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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 00:40:13