Я мигрирую на 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
часть.
Спасибо.