我使用https://pub.dev/packages/json_serializable为类生成Json序列化。这很好。现在我只想为json生成忽略一个字段,而不是在读取json时忽略例如以下示例中的dateOfBirth:
@JsonSerializable()
class Person {
final String firstName;
final String lastName;
final DateTime dateOfBirth; //<-- ignore this field for json serialization but not for deserialization
Person({this.firstName, this.lastName, this.dateOfBirth});
factory Person.fromJson(Map<String, dynamic> json) => _$PersonFromJson(json);
Map<String, dynamic> toJson() => _$PersonToJson(this);
}
当我使用JsonKey.ignore
时,toJson
和fromJson
的字段将被忽略。
我缺少这种情况下的JsonKey注释吗?
答案 0 :(得分:3)
使用空安全,它可以是:
@JsonKey(ignore: true)
final String documentID;
答案 1 :(得分:1)
这是我一直在使用的一种解决方法,因此我不会最终在我的FB数据库中存储两次documentID,同时仍然可以在对象上使用它们:
@JsonSerializable()
class Exercise {
const Exercise({
@required this.documentID,
// ...
}) : assert(documentID != null);
@JsonKey(toJson: toNull, includeIfNull: false)
final String documentID;
//...
factory Exercise.fromJson(Map<String, dynamic> json) =>
_$ExerciseFromJson(json);
Map<String, dynamic> toJson() => _$ExerciseToJson(this);
}
toNull
只是
toNull(_) => null;
toJson将使该值无效,然后includeIfNull不会序列化该值。