1

我在 Flutter 中使用 json_serializable 将类存储在文件中并从中读取。为简单起见,我没有在此处发布原始类,但原则是在编写应用程序的中途我决定将变量名称“aStupidName”更改为“name”。我如何建议代码生成实用程序将带有键“aStupidName”的 JSON 值(如果它存在于 JSON 中)分配给变量“name”,但如果存在键“name”以将其分配给变量,即在文件的较新版本中?

4

2 回答 2

0

您可以只修改文件并替换旧的对象名称。例如,您可以使用 sed

sed -i 's/{OLD_TERM}/{NEW_TERM}/g' {file}
于 2021-12-08T15:07:23.203 回答
0

嘿,我认为您可以做的是为模型中的同一字段提供多个 json 键注释。

@JsonSerializable()
class Person {

  @JsonKey(name: 'name') 
  @JsonKey(name:'first_name')
  final String firstName, lastName;

  final DateTime? dateOfBirth;

  Person({required this.firstName, required this.lastName, this.dateOfBirth});

  factory Person.fromJson(Map<String, dynamic> json) => _$PersonFromJson(json);

  Map<String, dynamic> toJson() => _$PersonToJson(this);
}

或者,您可以为 json 键注释提供显式fromJson参数一个函数来完全控制该字段如何反序列化

于 2021-12-08T14:54:08.477 回答