我是陌生的,遇到类型错误。我正在尝试使用json自动序列化。
这是我尝试从api获取数据的方式
Future getMyProduct() async {
final res = await http.get('url');
final data = json.decode(res.body);
BaseResponse req = new BaseResponse.fromJson(data);
return req;
}
我的BaseResponse
类看起来像这样
import 'package:dynamicapp/model/model.dart';
import 'package:json_annotation/json_annotation.dart';
part 'response.g.dart';
@JsonSerializable()
class BaseResponse extends Object {
final int id;
final int sellingPrice;
final int totalStock;
final String productName;
final String productDesc;
final List<Image> images;
BaseResponse(this.id, this.sellingPrice, this.totalStock, this.productName,
this.productDesc, this.images);
factory BaseResponse.fromJson(Map<String, dynamic> json) => _$BaseResponseFromJson(json);
Map<String, dynamic> toJson() => _$BaseResponseToJson(this);
}
@JsonSerializable()
class Image extends Object {
final int id;
final String image;
// final int product_id;
Image(this.id, this.image);
factory Image.fromJson(Map<String, dynamic> json) => _$ImageFromJson(json);
Map<String, dynamic> toJson() => _$ImageToJson(this);
}
有人可以帮助我吗?我被困在这里。一直在尝试不同的方法,但没有一个起作用。谢谢。
答案 0 :(得分:0)
看起来data
是List<dynamic>
,然后data.map(someFunc).toList()
将把每个数据元素传递给someFunc
并将其形成返回类型列表的someFunc
(您可能想成为BaseResponse
)。告诉您someFunc
必须是一个接受dynamic
并返回BaseResponse
的函数。
您想写这样的东西:
final data = json.decode(res.body);
List<BaseResponse> responses =
data.map((j) => BaseResponse.fromJson(j)).toList();