dart - 由于以下原因而失败:状态不佳:BuiltList 没有构建器工厂
问题描述
我正在builtvalue
为我的PODO
班级使用
以下是我的 json 回复
{
"status": 1,
"msg": "Success",
"allotmentMasterID": "1",
"allotmentInfoID": "1",
"category": [
{
"categoryID": "1",
"categoryName": "Major",
"selectedCount": "0",
"status": 1
},
{
"categoryID": "2",
"categoryName": "Mandatory",
"selectedCount": "0",
"status": 0
},
{
"categoryID": "3",
"categoryName": "Minor",
"selectedCount": "0",
"status": 0
}
]
}
我built value
为此创建了一个
以下是课程
library specialisation_model_first_screen;
import 'package:built_collection/built_collection.dart';
import 'package:built_value/built_value.dart';
import 'package:built_value/serializer.dart';
part 'specialisation_model_first_screen.g.dart';
abstract class SpecialisationModelFirstScreen
implements
Built<SpecialisationModelFirstScreen,
SpecialisationModelFirstScreenBuilder> {
SpecialisationModelFirstScreen._();
factory SpecialisationModelFirstScreen(
[updates(SpecialisationModelFirstScreenBuilder b)]) =
_$SpecialisationModelFirstScreen;
@nullable
@BuiltValueField(wireName: 'status')
int get status;
@nullable
@BuiltValueField(wireName: 'msg')
String get msg;
@nullable
@BuiltValueField(wireName: 'allotmentMasterID')
String get allotmentMasterID;
@nullable
@BuiltValueField(wireName: 'allotmentInfoID')
String get allotmentInfoID;
@nullable
@BuiltValueField(wireName: 'category')
BuiltList<Category> get category;
static Serializer<SpecialisationModelFirstScreen> get serializer =>
_$specialisationModelFirstScreenSerializer;
}
abstract class Category implements Built<Category, CategoryBuilder> {
Category._();
factory Category([updates(CategoryBuilder b)]) = _$Category;
@nullable
@BuiltValueField(wireName: 'categoryID')
String get categoryID;
@nullable
@BuiltValueField(wireName: 'categoryName')
String get categoryName;
@nullable
@BuiltValueField(wireName: 'selectedCount')
String get selectedCount;
@nullable
@BuiltValueField(wireName: 'status')
int get status;
static Serializer<Category> get serializer => _$categorySerializer;
}
library serializers;
import 'package:built_value/serializer.dart';
part 'package:dice_clutter/models/serializers/serializers.g.dart';
@SerializersFor(const [SpecialisationModelFirstScreen])
Serializers serializers = _$serializers;
Serializers standardSerializers = (serializers.toBuilder()..addPlugin(StandardJsonPlugin())).build();
以下是我的serializers.g.dart
文件
part of serializers;
Serializers _$serializers = (new Serializers().toBuilder()
..add(SpecialisationModelFirstScreen.serializer))
.build();
当我发出api
请求时,我得到了正确的响应,但引发了以下错误
failed due to: Bad state: No builder factory for BuiltList<Category>.
Fix by adding one, see SerializersBuilder.addBuilderFactory.
这是build value
图书馆本身的错误还是我做错了什么?
在某些情况下——我不完全理解具体原因——我的对象无法使用 StandartJsonPlugin 反序列化。
解决方案
您需要将该类添加Category
到可以序列化的类列表中:
@SerializersFor(const [
SpecialisationModelFirstScreen,
Category, <-- Category available for serialization
])
然后重新生成你的built_value
类。
更多细节可以在这个答案中找到
推荐阅读
- c++ - 如何使用 Il2CppInspector 在 C++ 中将 std::string 转换为 System.String?
- python - 使用 python selenium 在 iframe 中执行脚本标签
- javascript - 如何将多个变量置于if条件中?
- android - 如何修复错误没有方法签名:build_9rfemhg4a5yc2kwb7aemx3270.android() 适用于参数类型
- typescript - 剧作家测试不适用于 webkit
- javascript - 如何将 db 中的数据设置为 reducer 初始状态?
- c# - 确定一个数字是否是 2 的幂,但我有问题
- django - 上传图片不是创建媒体文件
- php - 如何使用ajax在where子句中选择具有数组值的数据 - codeigniter
- ruby-on-rails - 如果我正在加载生产环境变量,为什么 Rails 会关心我在 database.yml 中的“开发”环境?