Проблема заключается в следующем, у меня есть проект флаттера с некоторыми классами, использующими built_value , а некоторые классы, использующими json_serializable .
Оба прекрасно работают отдельно, но используют очень разные способы сериализации / десериализации JSON.
built_value делает свое дело с сериализаторами, а json_serializer использует соглашение dart: convert fromJson
/ toJson
методов
И я не могу найти простой способ их объединения.
Я ищу что-то вроде этого:
Допустим, у меня есть класс @JsonSerializable () Person
@JsonSerializable()
class Person {
final String name;
final int age;
Person(this.name, this.age);
factory Person.fromJson(Map<String, dynamic> json) => _$PersonFromJson(json);
Map<String, dynamic> toJson() => _$PersonToJson(this);
}
и класс встроенного значения SomeAppState
abstract class SomeAppState implements Built<SomeAppState, SomeAppStateBuilder> {
@nullable
Person get currentPerson;
SomeAppState._();
factory SomeAppState([void Function(SomeAppStateBuilder) updates]) = _$SomeAppState;
static Serializer<SomeAppState> get serializer => _$someAppStateSerializer;
}
Кажется, что нет разумного способа сериализации / десериализации объекта SomeAppState
, потому что build_value не заботится о fromJson / toJson, и, похоже, нет никакого способа сделать это наоборот. потому что сериализаторы built_value не выдают Map<String, dynamic>
Я вынужден выбрать либо / или просто принять, что вы не можете взаимодействовать между ними, или я что-то умное пропускаю?