列举一下浏览及使用过的方式吧:
1.在线转化
好久没更新了
2.Plugins
支持null-safe
2021/4/8 号更新了4.1.1版本
功能比较完善,看个人习惯
除了生成响应的entity外,其他生成的代码在generated目录下
3. json_serializable 库
由于实在不想写fromJson,toJson,我就简单创建了template,起名为jsondart
模板代码
import 'package:json_annotation/json_annotation.dart';
part '${NAME}.g.dart';
@JsonSerializable()
class ${ClassName} {
factory ${ClassName}.fromJson(Map<String, dynamic> json) =>
_$${ClassName}FromJson(json);
Map<String, dynamic> toJson() => _$${ClassName}ToJson(this);
}
创建Template
File-New-Edit File Templates
点“+”,Name 为jsondart , Extension为dart
把上面的模板代码paste到编辑区,点击OK
使用Template
右键-New-jsondart
输入FileName 为water_bean
输入ClassName为WaterBean
点击OK,生成的代码如下:
import 'package:json_annotation/json_annotation.dart';
part 'water_bean.g.dart';
@JsonSerializable()
class WaterBean {
factory WaterBean.fromJson(Map<String, dynamic> json) =>
_$WaterBeanFromJson(json);
Map<String, dynamic> toJson() => _$WaterBeanToJson(this);
}
此时代码报错,并不完善
你需要添加字段和构造方法
import 'package:json_annotation/json_annotation.dart';
part 'water_bean.g.dart';
@JsonSerializable()
class WaterBean {
String title;
@JsonKey(name: 'scores_num')
int scoresNum;
WaterBean(this.title, this.scoresNum);
factory WaterBean.fromJson(Map<String, dynamic> json) =>
_$WaterBeanFromJson(json);
Map<String, dynamic> toJson() => _$WaterBeanToJson(this);
}
运行命令:
flutter pub run build_runner build
然后得到water_bean.g.dart文件
part of 'water_bean.dart';
// **************************************************************************
// JsonSerializableGenerator
// **************************************************************************
WaterBean _$WaterBeanFromJson(Map<String, dynamic> json) {
return WaterBean(
json['title'] as String,
json['scores_num'] as int,
);
}
Map<String, dynamic> _$WaterBeanToJson(WaterBean instance) => <String, dynamic>{
'title': instance.title,
'scores_num': instance.scoresNum,
};
OK,that’s all