我正在使用以下dart程序包(json_annotation,json_serializable,build_runner)根据此page对json进行序列化/反序列化。
这是我的代码:
import 'package:json_annotation/json_annotation.dart';
part 'car_type.g.dart';
@JsonSerializable()
class CarType {
final int id;
@JsonKey(name: 'type_label')
final String label;
final String description;
CarType(this.id, this.label, this.description);
factory CarType.fromJson(Map<String, dynamic> json) =>
_$CarTypeFromJson(json);
factory List<CarType> CarType.fromJsonList(dynamic jsonArray){
final list = jsonArray as List;
final carTypesList = list.map((i) => CarType.fromJson(i));
return carTypesList;
}
}
因此,我想使用factory List<CarType> CarType.fromJsonList(dynamic jsonArray)
传递一个json数组以获取CarType对象的列表。但是我遇到了一些编译器错误:
知道发生了什么吗?
答案 0 :(得分:1)
factory List<CarType> CarType.fromJsonList(dynamic jsonArray){
您不能为构造函数指定返回类型。
返回类型始终与构造函数所属的类相同。
只需将factory
替换为static
,就可以了,
除了json_serializable
需要工厂构造函数之外,您需要删除返回类型并找到另一种获取List
的方法。