怎么使用json_serializable的文章网上已经很多了,大家可以自行google.这里推荐一篇
https://juejin.im/post/5b5f00e7e51d45190571172f
这里说的重点是我在使用json_serializable时碰到的一个问题。
感谢干货集中营里面的免费接口。现在我们来解析接口http://gank.io/api/xiandu/categories的返回数据。
大家打开可以看到返回数据有一个字段_id.问题就出在这里。
import 'package:json_annotation/json_annotation.dart';
part 'smallnew.g.dart';
@JsonSerializable()
class smallnew{
@JsonKey(name:"_id")//注意这个地方,服务端返回的字段是_id,但如果直接用String _id,而不加以处理的话,是生成不了smallnew.g.dart的,只能如此处处理。
String id;
String en_name;
String name;
int rank;
factory smallnew.fromJson(Map<String, dynamic> json) => _$smallnewFromJson(json);
Map<String, dynamic> toJson() => _$smallnewToJson(this);
smallnew(this.id, this.en_name, this.name, this.rank);
@override
String toString() {
return 'smallnew{_id: $id, en_name: $en_name, name: $name, rank: $rank}';
}
}
外面一层的模型是
import 'package:json_annotation/json_annotation.dart';
import 'package:flutter_app1/model/smallnew.dart';
part 'big.g.dart';
@JsonSerializable()
class big{
bool error;
List<smallnew> results;
factory big.fromJson(Map<String, dynamic> json) => _$bigFromJson(json);
Map<String, dynamic> toJson() => _$bigToJson(this);
big(this.error, this.results);
@override
String toString() {
return 'big{error: $error, results: $results}';
}
}
注意smallnew类里面,服务端返回的字段是_id,但如果直接用String _id,而不加以处理的话,是生成不了smallnew.g.dart的,需要添加@JsonKey(name:"_id")。括号里面的是服务端返回的真实字段
That'all ! 3Q~
网友评论