变量名可以与 json 不同吗?

Dav*_*vid 2 json flutter

当使用 json_serialazable ( https://pub.dartlang.org/packages/json_serializable ) 时,变量名称似乎需要与 json 名称相同。我错了吗?

@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);
}
Run Code Online (Sandbox Code Playgroud)

json 还将包含“firstName”、“lastName”和“dateOfBirth”参数。

比方说,我更喜欢使用“final String first”而不是“firstName”,但仍然希望从 json 读取的“firstName”映射到“first”。是否可以?

我知道有手动方式,但如果我仍然可以使用这种方式,我想知道如何?

谢谢!

Gün*_*uer 7

您可以添加注释来自定义

@JsonKey(name: 'firstName')
final String first;
Run Code Online (Sandbox Code Playgroud)

另请参阅https://github.com/dart-lang/json_serializes/blob/master/json_annotation/lib/src/json_key.dart,它支持序列化和反序列化的各种设置。

json_annotation包还有几个注释。