在 Flutter 中我们对模型进行序列化(toJson),但是我们如何生成包含 getter 的 toJson?
简单的例子
class MyClass {
const MyClass({
required this.a,
required this.b,
});
final double a;
final double b;
double get average => (a + b) / 2;
}
我们使用
json_serializable
包来生成 toJson
方法。
它生成 my_class.g.dart
文件,其中有 toJson 和 fromJson 方法。
问题是,通过这种方式,我们没有 getter 的序列化(在我们的示例中为 average
字段)。
我们可以做什么来提供完整的序列化,包括类 getter? 有没有办法使用
json_serializable
、freezed
或任何其他包来实现它?
用
@JsonKey()
注释标记你的 getter。正如您在 json_serializable
源代码中看到的,它既可用于字段也可用于 getter:
@Target({TargetKind.field, TargetKind.getter})
https://pub.dev/documentation/json_annotation/4.8.1/json_annotation/JsonKey-class.html