变量名称可以与json名称不同吗?

时间:2018-12-16 16:47:17

标签: json flutter

使用json_serialiazable(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);
}

并且json也将具有'firstName','lastName'和'dateOfBirth'参数。

让我说,我更喜欢使用“最终字符串优先”而不是“ firstName”,但仍然希望将从json读取的“ firstName”映射为“ first”。有可能吗?

我知道有手动方法,但是如果我仍然可以使用这种方法,我想知道怎么做?

谢谢!

1 个答案:

答案 0 :(得分:2)

您可以添加注释以进行自定义

@JsonKey(name: 'firstName')
final String first;

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

json_annotation软件包中还有更多注释。