当前位置: 首页 > 知识库问答 >
问题:

错误:类型列表不是类型映射的子类型

隆扬
2023-03-14

因此,我创建了一个应用程序,通过api读取数据,并尝试解析JSON api

这是我的错误截图

我试着把它改成一个列表,但它仍然读取一个错误

这是我的密码大象。飞奔

@JsonSerializable()
class ElephantList{
  ElephantList({this.biodata});
  final List<Elephant> biodata;
  factory ElephantList.fromJson(Map<String, dynamic> json) => _$ElephantListFromJson(json);
  Map<String, dynamic> toJson() => _$ElephantListToJson(this);
}

@JsonSerializable()
class Elephant{
  Elephant({this.name, this.affiliation, this.species,
  this.sex, this.fictional, this.dob, this.dod, this.wikilink, this.image, this.note});
  //final String index;
  final String name;
  final String affiliation;
  final String species;
  final String sex;
  final String fictional;
  final String dob;
  final String dod;
  final String wikilink;
  final String image;
  final String note;

  factory Elephant.fromJson(Map<String, dynamic> json) => _$ElephantFromJson(json);
  Map<String, dynamic> toJson() => _$ElephantToJson(this);
}

Future<ElephantList> getElephantList() async{
  const url = 'https://elephant-api.herokuapp.com/elephants/sex/male';
  final response = await http.get(url);
  if(response.statusCode ==  200){
    return ElephantList.fromJson(json.decode(response.body));
  }else{
    throw HttpException('Error ${response.reasonPhrase}', uri: Uri.parse(url));
  }
}

如何纠正此错误?请帮忙

共有1个答案

董新觉
2023-03-14

api:https://elephant-api.herokuapp.com/elephants/sex/male返回大象列表,格式为:[大象,大象,…] 映射时

@JsonSerializable(anyMap: true)
class ElephantList{
  ElephantList({this.biodata});
  final List<Elephant> biodata;
  factory ElephantList.fromJson(List<dynamic> json) => _$ElephantListFromJson(json);
  List<dynamic> toJson() => _$ElephantListToJson(this);
}

@JsonSerializable()
class Elephant{
  Elephant({this.name, this.affiliation, this.species,
  this.sex, this.fictional, this.dob, this.dod, this.wikilink, this.image, this.note});
  //final String index;
  final String name;
  final String affiliation;
  final String species;
  final String sex;
  final String fictional;
  final String dob;
  final String dod;
  final String wikilink;
  final String image;
  final String note;

  factory Elephant.fromJson(Map<String, dynamic> json) => _$ElephantFromJson(json);
  Map<String, dynamic> toJson() => _$ElephantToJson(this);
}

Future<ElephantList> getElephantList() async{
  const url = 'https://elephant-api.herokuapp.com/elephants/sex/male';
  final response = await http.get(url);
  if(response.statusCode ==  200){
    return ElephantList.fromJson(json.decode(response.body));
  }else{
    throw HttpException('Error ${response.reasonPhrase}', uri: Uri.parse(url));
  }
}

编辑:@JsonSerializable要求json作为映射

 类似资料:
  • 我试图获得用户信息后,用户输入电子邮件和密码。我使用的api会返回我用户的额外信息,所以我尝试从中获取这些信息。 我试图解析这个json: 这些是我的模型: 这是我发送电子邮件、密码和获取用户数据的部分: 这是给我错误的部分 我打印了响应体,它给出了我想要的字符串,但是jsonDecode返回了一个列表,所以我不能使用它。我怎样才能解决这个问题?提前谢谢。

  • 我目前正在构建一个通过api读取数据的应用程序,我正在尝试从JSON占位符解析JSON api。 我为用户(users_future_model.dart)做了一个模型类: 这是将json读入小部件的main.dart: 这是我试图阅读的JSON信息,尽管它只是其中的一小部分: 我当前遇到的错误是: 如何纠正此错误?

  • 我正面临着一个奇怪的颤动错误。我使用json序列化。 这是我的密码 我的web api发送的数据如下 这是数组的数组。 生成错误的代码是 它给出的错误 JSON数据这里是JSON数据格式的屏幕截图

  • 当我尝试解码json时,它会给我错误。 我的模范班 功能在我使用它的地方 json数据

  • 我对Flutter编程非常陌生,我正在尝试导入一个本地JSON文件,其中包含书籍数据,如标题、作者、发布年份等。 最初我使用JSON-to-DART转换器来组装一个图书数据模型,现在我正在尝试创建一个函数,在该函数中,程序获取本地JSON文件,并使用类中的方法将数据解析为地图。 我遇到的问题是返回类型

  • 我目前正在构建一个应用程序,通过医疗api读取数据,我试图解析JSON。 我为用户创建了一个模型类: 这是我试图阅读的JSON信息: 但是我得到的错误列表不是Map类型的子类型 如何修复此错误?