dart - 使用 json_serializable 包生成 dart 文件

标签 dart flutter dart-pub json-serialization

根据json_serializable包installing instructions ,您应该添加以下依赖项:

dependencies:
  json_serializable: ^2.0.3

这是我的代码:

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);
}

现在在 Flutter 中运行:

flutter packages pub run build_runner build

或者对于 Dart 项目:

pub run build_runner build

我收到以下错误:

Could not find package "build_runner". Did you forget to add a dependency?

怎么了?

最佳答案

这是 Pub 如何设置自动生成安装说明的问题。以下是您实际需要添加的依赖项:

dependencies:
  json_annotation: ^2.0.0

dev_dependencies:
  build_runner: ^1.0.0
  json_serializable: ^2.0.0

这显示在 json_serializable example .

现在您可以为这样的类生成 dart 文件

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);
}

通过在 Flutter 项目中运行它:

flutter packages pub run build_runner build

或者在 Dart 项目中:

pub run build_runner build

其他说明:

  • 确保 part 'person.g.dart' 与您的 person.dart 模型类文件的名称匹配。也就是说,不要将其称为 example.g.dart

关于dart - 使用 json_serializable 包生成 dart 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55346828/

相关文章:

flutter - 使用 Navigator 时,如何解决方法 'ancestorStateOfType' 在 null 上被调用?

flutter 测试 : How to only run one group or test

flutter - 如何序列化和反序列化2D矩阵?

android - android中的Flutter启动屏幕从黑色标题栏过渡到白色

events - 如何使用特定的KeyCode调度KeyboardEvent

dart - 仅运行 flutter 桌面应用程序的单个实例

firebase - 如何正确更新事件流的 Firestore 查询快照?

flutter - 如何返回低于10 km的距离的抖动

Flutter GetX 绑定(bind)?

dart - 在DART应用中找不到发布包引用