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

Flutter解析API子模型报错:'String'非'index'的'int'子类型

解决Dart解析API时'String' is not a subtype of type 'int' of 'index'错误

问题场景

从API获取数据时,解析TravelStatus.dart子模型触发类型错误:'String' is not a subtype of type 'int' of 'index'。

错误原因

API返回的travel、destination、acomodation字段为数组类型,但TravelStatus模型中对应字段被定义为单个对象类型。当解析器尝试用字符串键(如travel['id'])访问数组时,数组仅支持整数索引访问,因此触发类型不匹配错误。

解决方案

修改TravelStatus模型,将travel、destination、acomodation字段的类型从单个对象改为对应模型的数组(List<>),同时调整解析逻辑适配数组结构。

代码修改示例

原错误的TravelStatus模型定义

class TravelStatus {
  final Travel travel;
  final Destination destination;
  final Acomodation acomodation;

  TravelStatus({required this.travel, required this.destination, required this.acomodation});

  factory TravelStatus.fromJson(Map<String, dynamic> json) {
    return TravelStatus(
      travel: Travel.fromJson(json['travel']),
      destination: Destination.fromJson(json['destination']),
      acomodation: Acomodation.fromJson(json['acomodation']),
    );
  }
}

修改后的TravelStatus模型定义

class TravelStatus {
  final List<Travel> travel;
  final List<Destination> destination;
  final List<Acomodation> acomodation;

  TravelStatus({required this.travel, required this.destination, required this.acomodation});

  factory TravelStatus.fromJson(Map<String, dynamic> json) {
    return TravelStatus(
      travel: List<Travel>.from(json['travel'].map((x) => Travel.fromJson(x))),
      destination: List<Destination>.from(json['destination'].map((x) => Destination.fromJson(x))),
      acomodation: List<Acomodation>.from(json['acomodation'].map((x) => Acomodation.fromJson(x))),
    );
  }
}

特殊场景处理

如果业务中API返回的数组仅包含单个元素,且需要将其作为单个对象使用,可在解析时取数组第一个元素:

factory TravelStatus.fromJson(Map<String, dynamic> json) {
  return TravelStatus(
    travel: Travel.fromJson(json['travel'].first),
    destination: Destination.fromJson(json['destination'].first),
    acomodation: Acomodation.fromJson(json['acomodation'].first),
  );
}

注意:此方式需确保API返回的数组非空,建议添加空值判断避免空指针错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 12:07:13