如何在 json_serialized 中使用私有构造函数

iDe*_*ode 7 dart flutter json-serializable

我在类中使用私有构造函数,但代码生成失败

该类Foo没有默认构造函数。

我正在使用最新json_serializable: 版本,即6.1.5

@JsonSerializable()
class Foo {
  final int count;
  Foo._(this.count);

  factory Foo.fromJson(Map<String, dynamic> json) => _$Foo._FromJson(json);
}
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

ibh*_*ana 8

您可以使用中@JsonSerializable(constructor: '_')介绍的。4.2.0-devJsonSerializable

这将允许您在创建助手时指定要调用的替代构造函数fromJson

例如:

import 'package:json_annotation/json_annotation.dart';

part 'foo.g.dart';

@JsonSerializable(constructor: '_')
class Foo {
  final int count;
  Foo._(this.count);

  factory Foo.fromJson(Map<String, dynamic> json) => _$FooFromJson(json);
}

Run Code Online (Sandbox Code Playgroud)

现在在这里,不要像fromJson这样使用_$Foo._FromJson(json),而是将其用作_$FooFromJson(json)