Flutterjson模型错误,_stackTrace =空

ki1q1bka  于 2022-11-19  发布在  Flutter
关注(0)|答案(1)|浏览(88)

当我解析json时,我在json模型中得到错误,'media' = null,但是在api响应中'media'有数据并且!=null,我认为这是'media'解析错误。响应也工作得很好,statusCode=200,数据也不是空的。我如何修复这些错误?
这是我代码:

class Product {
  late final int id;
  late final String name;
  late final String categoryName;
  late final List<Media> media;
  Product({
    required this.id,
    required this.name,
    required this.categoryName,
    required this.media,
  });
  Product.fromJson(Map<String, dynamic> json){
    id = json['id'];
    name = json['name'];
    categoryName = json['category_name'];
    media = List.from(json['media']).map((e)=>Media.fromJson(e)).toList();
  }

  Map<String, dynamic> toJson() {
    final _data = <String, dynamic>{};
    _data['id'] = id;
    _data['name'] = name;
    _data['category_name'] = categoryName;
    _data['media'] = media.map((e)=>e.toJson()).toList();
    return _data;
  }
}

class Media {
  Media({
    required this.id,
    required this.productId,
    required this.type,
    required this.links,
    this.position,
    required this.createdAt,
    required this.updatedAt,
  });
  late final int id;
  late final int productId;
  late final String type;
  late final Links links;
  String? position;
  late final String createdAt;
  late final String updatedAt;

  Media.fromJson(Map<String, dynamic> json){
    id = json['id'];
    productId = json['product_id'];
    type = json['type'];
    links = Links.fromJson(json['links']);
    position = json['position'];
    createdAt = json['created_at'];
    updatedAt = json['updated_at'];
  }

  Map<String, dynamic> toJson() {
    final _data = <String, dynamic>{};
    _data['id'] = id;
    _data['product_id'] = productId;
    _data['type'] = type;
    _data['links'] = links.toJson();
    _data['position'] = position;
    _data['created_at'] = createdAt;
    _data['updated_at'] = updatedAt;
    return _data;
  }
}

class Links {
  Links({
    required this.s3,
    required this.cdn,
    required this.local,
  });
  late final String? s3;
  late final String? cdn;
  late final Local local;

  Links.fromJson(Map<String, dynamic> json){
    s3 = json['s3'];
    cdn = json['cdn'];
    local = Local.fromJson(json['local']);
  }

  Map<String, dynamic> toJson() {
    final _data = <String, dynamic>{};
    _data['s3'] = s3;
    _data['cdn'] = cdn;
    _data['local'] = local.toJson();
    return _data;
  }
}

class Local {
  Local({
    required this.full,
    required this.thumbnails,
  });
  late final String full;
  late final Thumbnails thumbnails;

  Local.fromJson(Map<String, dynamic> json){
    full = json['full'];
    thumbnails = Thumbnails.fromJson(json['thumbnails']);
  }

  Map<String, dynamic> toJson() {
    final _data = <String, dynamic>{};
    _data['full'] = full;
    _data['thumbnails'] = thumbnails.toJson();
    return _data;
  }
}

class Thumbnails {
  Thumbnails({
  required this.s150,
  required this.s350,
  required this.s750,
});
late final String s150;
late final String s350;
late final String s750;

Thumbnails.fromJson(Map<String, dynamic> json){
s150 = json['150'];
s350 = json['350'];
s750 = json['750'];
}

Map<String, dynamic> toJson() {
  final _data = <String, dynamic>{};
  _data['150'] = s150;
  _data['350'] = s350;
  _data['750'] = s750;
  return _data;
}
}

我的错误:类型'Null'不是类型'Iterable'的子类型_stackTrace = null x1c 0d1x

avwztpqn

avwztpqn1#

尝试在那里使媒体可为空,我认为它可能会更好地为您服务。

final List<Media>? media;

相关问题