You need to enable JavaScript to run this app. Flutter解析JSON数组时如何区分重名title键并分别赋值给变量
优惠活动
大模型
产品
解决方案
定价
更多

Flutter解析JSON数组时如何区分重名title键并分别赋值给变量

解决方案

你遇到的同名title并非JSON顶层的重复键,而是存在于results数组的不同元素中,只要按数组下标取值即可区分,具体实现步骤如下:

1. 补全实体类结构

你需要保证MostPopular和对应的子实体类结构和JSON结构匹配,示例代码如下:

// 父实体类 MostPopular
class MostPopular {
  int page;
  List<Movie> results;
  MostPopular({required this.page, required this.results});
  
  factory MostPopular.fromJson(Map<String, dynamic> json) {
    var resultsList = json['results'] as List;
    List<Movie> movies = resultsList.map((item) => Movie.fromJson(item)).toList();
    return MostPopular(
      page: json['page'],
      results: movies,
    );
  }
}

// 子实体类 Movie,对应results数组里的单个电影对象
class Movie {
  bool adult;
  String backdropPath;
  List<int> genreIds;
  int id;
  double popularity;
  String posterPath;
  String releaseDate;
  String title;
  
  Movie({
    required this.adult,
    required this.backdropPath,
    required this.genreIds,
    required this.id,
    required this.popularity,
    required this.posterPath,
    required this.releaseDate,
    required this.title,
  });
  
  factory Movie.fromJson(Map<String, dynamic> json) {
    var genreList = json['genre_ids'] as List;
    List<int> ids = genreList.cast<int>();
    return Movie(
      adult: json['adult'],
      backdropPath: json['backdrop_path'],
      genreIds: ids,
      id: json['id'],
      popularity: json['popularity'],
      posterPath: json['poster_path'],
      releaseDate: json['release_date'],
      title: json['title'],
    );
  }
}

2. 分别取出两个title赋值

调用obtenerInfo拿到MostPopular对象后,直接通过数组下标定位对应电影元素,再取title即可:

// 调用示例
void getTitles() async {
  MostPopular data = await obtenerInfo();
  // 第一个电影的title赋值给title1
  String title1 = data.results[0].title;
  // 第二个电影的title赋值给title2
  String title2 = data.results[1].title;
  // 后续可直接使用title1、title2变量
}

注意事项

  • 取值前可以先判断results数组的长度,避免数组元素不足导致下标越界报错
  • 如果是批量处理多个电影的title,直接遍历results数组即可

内容的提问来源于stack exchange,提问作者Brian

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 00:36:06