我有FooBar两个班:

@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类中重写toString方法,但我认为在使用json_serializable生成代码时,这不是一种好方法.我想我缺少一些微不足道的财产.

推荐答案

对于在另一个类中拥有自定义类,您需要在目标类中使用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);
}

Flutter相关问答推荐

我怎样才能判断一个字符串值是否为空(&Q;&Q;)?

自定义ItemBuilderFlutter

如何实现Flutter 梳理机图像的小量移动

来自FirebaseAuth的错误DisplayName和邮箱在Flutter应用程序中给出错误

为什么我的页面控制器在使用Riverpod时没有更改我的页面视图?

框中的Flutter 适配图像

StateNotifer正在riverpod中提供初始状态值(bool)

如何使listview.builder在筛选列表后实时更新

Flutter Riverpod 没有捕获 List 的嵌套值变化

如何修改来自合并 list 的 Android list 权限?

当键盘隐藏表单时该怎么办?

如何使Flutter 屏幕无法关闭?

Flutter 错误:OutletListModel类型的值不能分配给List类型的变量?

如何格式化网址?

Flutter HLS .m3u8 视频无法实时播放

为什么 setState 不改变我的变量 Flutter?

有任何方法可以在应用程序移动背景恢复时显示 appopenAd

Flutter如何从左到右连续 Select 多个列表项而不跳过任何

如何从dart 中的当前日期时间中减go 1 天?

Android Emulator 您的设备目前没有健康的互联网连接