flutter json_serialized tojson 无法正常工作

Pan*_*rld 6 flutter json-serialization

我查看Order类示例,发现 Item 类未转换为 Map。

class Order {
  int count;
  int itemNumber;
  bool isRushed;
  Item item; 
  Map<String, dynamic> toJson() => _$OrderToJson(this);
}
Run Code Online (Sandbox Code Playgroud)

生成的 .g 文件具有以下内容:

Map<String, dynamic> _$OrderToJson(Order instance) {
  ...
  writeNotNull('item', instance.item);
  ...
  return val;
}
Run Code Online (Sandbox Code Playgroud)

订单地图中的项目仍然是项目类型,但我希望它也能自动转换为地图。生成的 .g 文件应该有这样的内容

writeNotNull('item', instance.item.toJson());
Run Code Online (Sandbox Code Playgroud)

我不想手动添加它,因为重新生成 .g 文件时它将被覆盖。为什么 json_serialized lib 没有做这么简单的事情,或者我错过了什么?谢谢。

Pan*_*rld 18

现在我找到了解决方案,只需在 build.yaml 中设置即可

显式到 json = true。

并重新生成 .g 文件。它现在应该为您将其转换为地图。


aar*_*gas 8

对于 firebase 你也需要这个any_map选项,因为 firebase 的地图<dynamic, dynamic>否则它会期望<String, dynamic>

在 flutter 项目的根目录中创建此文件build.yaml,默认情况下它不存在。

targets:
  $default:
    builders:
      json_serializable:
        options:
          any_map: true
          explicit_to_json: true
Run Code Online (Sandbox Code Playgroud)