Способ работы со значениями Dynami c из Json в json_serializable - PullRequest
0 голосов
/ 08 апреля 2020

Я мигрирую на json_serializable с Json и Json для моих моделей и сталкиваюсь с некоторой проблемой.

Предположим, у меня есть такой класс:

@JsonSerializable()
class Something {
  final bool myfield;

  factory Something.fromJson(Map<String, dynamic> json) => _$SomethingFromJson(json);

  Map<String, dynamic> toJson() => _$SomethingToJson(this);
}

Это работает, пока я не получу myfield как non-bool. Иногда это int. (1=true и 0=false).

Я попробовал следующее решение:

factory Something.fromDB(Map<String, dynamic> json) {
  if (json['myfield'] is int) {
    // convert the field to bool
    json['myfield'] = json['myfield'] == 1;
  }

  return _$SomethingFromJson(json);
}

Это действительно делает работу. Но мне кажется, что это обходной путь. У меня есть много полей, как это. И если я начну делать то же самое, что и выше, я не думаю, что здесь есть какое-то использование json_serializable в моем случае использования.

Я что-то не так делаю? Есть ли лучший способ или пакет для решения этой проблемы?

Примечание: мне также нужно играть между int и bool в toJson, но это другая история. Меня интересует только fromJson часть.

Спасибо.

...