Flutter
使用 json_annotation
和 json_serializable
处理 json数据
-
pubspec.yaml
添加如下:
dependencies:
flutter:
sdk: flutter
# The following adds the Cupertino Icons font to your application.
json_annotation: ^3.0.1
dev_dependencies:
flutter_test:
sdk: flutter
build_runner: ^1.7.2
json_serializable: ^3.2.5
- 新建
model
类,参考:https://pub.dev/packages/json_serializable#-example-tab-
如下:
import 'package:json_annotation/json_annotation.dart';
part 'Person.g.dart';
@JsonSerializable(nullable: false)
class Person {
final String firstName;
final String lastName;
final DateTime dateOfBirth;
Person({this.firstName, this.lastName, this.dateOfBirth});
factory Person.fromJson(Map<String, dynamic> json) => _$PersonFromJson(json);
Map<String, dynamic> toJson() => _$PersonToJson(this);
}
1、初次创建
Person.dart
的时候,需要加入part 'Person.g.dart';
2、在需要转换的实体dart 类
前加入@JsonSerializable(nullable: false)
注解,标识需要json序列化
处理
3、fromJson()
、toJson()
方法的写法是固定模式,按模板修改即可
4、Person.g.dart
和文件名
需要保持一致,否则执行以下命令无效
-
cd 到根目录,执行
flutter packages pub run build_runner build
指令生成Person.g.dart
文件
若生成 *.g.dart 报错?
- 清除之前生成的文件
flutter packages pub run build_runner build clean
- 直接执行下面的命令:
flutter packages pub run build_runner build --delete-conflicting-outputs
- 再重新生成 .g.dart
flutter packages pub run build_runner build