json_serializable 使用说明

Flutter 使用 json_annotationjson_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
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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。