没使用过json_serializable的,可以参考Flutter 中的JSON序列化
version
dependencies:
flutter:
sdk: flutter
# handling JSON
json_serializable: ^4.1.0
支持泛型化?
json_serializable 是支持泛型的(genericArgumentFactories设置为true),这通过文档可以看到
/// ```dart
/// @JsonSerializable(genericArgumentFactories: true)
/// class Response<T> {
/// int status;
/// T value;
/// }
/// ```
///
/// Looks like
///
/// ```dart
/// Response<T> _$ResponseFromJson<T>(
/// Map<String, dynamic> json,
/// T Function(Object json) fromJsonT,
/// ) {
/// return Response<T>()
/// ..status = json['status'] as int
/// ..value = fromJsonT(json['value']);
/// }
///
/// Map<String, dynamic> _$ResponseToJson<T>(
/// Response<T> instance,
/// Object Function(T value) toJsonT,
/// ) =>
/// <String, dynamic>{
/// 'status': instance.status,
/// 'value': toJsonT(instance.value),
/// };
实际使用
请求状态码
拿经常用的http请求后的状态数据举个例子:
{
"errno": 0,
"message": "请求成功",
"data": {
"title": "请问外环路怎么走?",
"scores_num": 9
}
}
创建RoadBean
import 'package:json_annotation/json_annotation.dart';
part 'road_bean.g.dart';
@JsonSerializable()
class RoadBean {
String title;
@JsonKey(name: 'scores_num')
int scoresNum;