如何委托对 json_serialization 中方法的调用?
How to delegate a call to a method in json_serialization?
我有两个 classes Foo
和 Bar
:
@JsonSerializable()
class Foo {
final Bar bar;
Foo(this.bar);
factory Foo.fromJson(Map<String, dynamic> json) => _$FooFromJson(json);
Map<String, dynamic> toJson() => _$FooToJson(this);
}
@JsonSerializable()
class Bar {
final String s;
Bar(this.s);
factory Bar.fromJson(Map<String, dynamic> json) => _$BarFromJson(json);
Map<String, dynamic> toJson() => _$BarToJson(this);
}
生成代码后,我使用:
final bar = Bar('hi');
final foo = Foo(bar);
print(foo.toJson());
上面一行打印
{bar: Instance of 'Bar'}
但我想让它打印出来
{bar: "hi"}
一种方法是重写 Bar
class 中的 toString
方法,但我认为在使用 json_serializable
进行代码生成时,这不是一个好方法。我认为我缺少一些微不足道的东西 属性。
要在另一个 class 中使用自定义 class,您需要在目标 class.
中使用 explicitToJson: true
@JsonSerializable(explicitToJson: true)
class Foo {
final Bar bar;
Foo(this.bar);
factory Foo.fromJson(Map<String, dynamic> json) => _$FooFromJson(json);
Map<String, dynamic> toJson() => _$FooToJson(this);
}
我有两个 classes Foo
和 Bar
:
@JsonSerializable()
class Foo {
final Bar bar;
Foo(this.bar);
factory Foo.fromJson(Map<String, dynamic> json) => _$FooFromJson(json);
Map<String, dynamic> toJson() => _$FooToJson(this);
}
@JsonSerializable()
class Bar {
final String s;
Bar(this.s);
factory Bar.fromJson(Map<String, dynamic> json) => _$BarFromJson(json);
Map<String, dynamic> toJson() => _$BarToJson(this);
}
生成代码后,我使用:
final bar = Bar('hi');
final foo = Foo(bar);
print(foo.toJson());
上面一行打印
{bar: Instance of 'Bar'}
但我想让它打印出来
{bar: "hi"}
一种方法是重写 Bar
class 中的 toString
方法,但我认为在使用 json_serializable
进行代码生成时,这不是一个好方法。我认为我缺少一些微不足道的东西 属性。
要在另一个 class 中使用自定义 class,您需要在目标 class.
中使用explicitToJson: true
@JsonSerializable(explicitToJson: true)
class Foo {
final Bar bar;
Foo(this.bar);
factory Foo.fromJson(Map<String, dynamic> json) => _$FooFromJson(json);
Map<String, dynamic> toJson() => _$FooToJson(this);
}