颤振:json_serializable 1 => 真,0 => 假

时间:2021-04-15 14:40:11

标签: json flutter dart serialization

我使用 json_serializable 将 Map<dynamic, dynamic> 解析为我的对象。 示例:

@JsonSerializable()
class Todo {
  String title;
  bool done;

  Todo(this.title, this.done);

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

因为我从 api 获取 'done': 1,所以我收到以下错误:

Unhandled Exception: type 'int' is not a subtype of type 'bool' in type cast

如何使用 json_serializable 转换 1 = true0 = false

1 个答案:

答案 0 :(得分:3)

您可以拥有自定义转换器(在此示例中,由于方法 int,它是 Duration_durationFromMilliseconds):

https://github.com/google/json_serializable.dart/blob/master/example/lib/example.dart

所以在你的代码中它可能是这样的:

@JsonSerializable()
class Todo {
  String title;

  @JsonKey(fromJson: _boolFromInt, toJson: _boolToInt)
  bool done;

  static bool _boolFromInt(int done) => done == 1;

  static int _boolToInt(bool done) => done ? 1 : 0;

  Todo(this.title, this.done);

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