Я пытаюсь использовать built_value и json_serializable вместе для анализа ответа json, поступающего с сервера на классы моделей.
Ниже приведены зависимости:
built_collection: ^4.0.0
built_value: ^6.1.4
dev_dependencies:
build_runner: ^1.0.0
built_value_generator: ^6.1.4
json_serializable: ^1.4.0
Ниже приведен код, который я написал
abstract class UserData implements Built<UserData, UserDataBuilder>{
String get user_first_name;
String get user_last_name;
String get user_mobile;
String get email;
String get user_type;
Company get company;
UserType get type;
UserData._();
factory UserData([updates(UserDataBuilder b)]) = _$UserData;
static Serializer<UserData> get serializer => _$userDataSerializer;
}
abstract class Company implements Built<Company, CompanyBuilder>{
String get id;
Company._();
factory Company([updates(CompanyBuilder b)]) = _$Company;
static Serializer<Company> get serializer => _$companySerializer;
}
abstract class UserType implements Built<UserType, UserTypeBuilder>{
String get id;
UserType._();
factory UserType([updates(UserTypeBuilder b)]) = _$UserType;
static Serializer<UserType> get serializer => _$userTypeSerializer;
}
Код класса сериализатора:
@SerializersFor(const [
UserData
])
Serializers serializers = _$serializers;
Serializers standardSerializers =
(serializers.toBuilder()..addPlugin(StandardJsonPlugin())).build();
Ниже приводится ответ, который я получаю с сервера.
{
"user": {
"id": "505d27b0-acaa-11e8-b916-21359608417b",
"email": "example@gmail.com",
"user_first_name": "Pankaj",
"user_last_name": "P",
"user_dob": null,
"active_status": 1,
"user_region_id": null,
"user_base_currency": "USD",
"user_address": null,
"is_god_user": 0,
"is_super_user": 0,
"profile": null,
"advanced_search": 0,
"region": null,
"company": {
"id": "24e311f0-acaa-11e8-8750-8de299c7797b",
"company_name": "SHPR A",
"company_address": null,
"company_logo": "",
"company_constitution": "pvt_ltd",
"company_email": "shpra@mail.com",
"state": null,
"country": null,
"postal_code": null,
"date_of_establishment": null,
"number_of_employees": null,
"company_turnover": null,
"vendor_id": null
},
"type": {
"id": "5eeebe55-fdf4-11e7-81f1-ac7ba173bed6",
"user_type_code": "11",
"user_type_name": "ADMIN",
"user_category": "SHIPPER"
}
}
}
Наконец, я пытаюсь выполнить синтаксический анализ, используя следующую строку кода
serializers.deserializeWith(UserData.serializer, json.decode(response.body))
Однако я получаю следующую ошибку
failed due to: type '_InternalLinkedHashMap<String, dynamic>' is not a subtype of type 'Iterable<dynamic>' in type cast
Просьба пролить свет на то, что может быть причиной этой проблемы.