【发布时间】:2021-12-08 16:21:19
【问题描述】:
让我们看一下由三个类组成的简单类层次结构:
-
一个抽象基类:
abstract class BaseClass { String name; BaseClass(this.name); } -
一些派生自抽象基类的类。
@JsonSerializable() class ConcreteClass extends BaseClass { int someValue; ConcreteClass(this.someValue, String name) : super(name); factory ConcreteClass.fromJson(Map<String, dynamic> json) => _$ConcretClassFromJson(json); Map<String, dynamic> toJson() => _$ConcreteClassToJson(this); } -
最后是一个主类,它将所有具体类存储在一个集合中。这是一个示例:
@JsonSerializable() class DataJuggler { Set<BaseClass> allTheDataInTheWorld = Set<BaseClass>(); DataJuggler(); factory DataJuggler.fromJson(Map<String, dynamic> json) => _$DataJugglerFromJson(json); Map<String, dynamic> toJson() => _$DataJugglerToJson(this); }
当启动build_runner 生成 json 序列化代码时,它失败了:
[SEVERE] json_serializable:json_serializable on lib/what_an_awesome_app/data_juggler.dart:
Could not generate `fromJson` code for `allTheDataInTheWorld` because of type `BaseClass`.
package:/totally_awesome/what_an_awesome_app/data_juggler.dart:12:25
╷
12 │ Set<BaseClass> allTheDataInTheWorld = Set<BaseClass>();
╵
现在的问题是,这里出了什么问题?或者更好:如何获得为DataJuggler 类生成的json 序列化代码?非常欢迎您的建议。谢谢。
【问题讨论】:
标签: flutter serialization json-serialization