У меня есть строка как:
{
"success": true,
"data": {
"access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJlbWFpbCI6ImdveWFsMTk5Mi52aWJob3JAZ21haWwuY29tIiwiaWF0IjoxNTg2MTEzMjE2LCJleHAiOjE1ODYxOTk2MTZ9.xCCre_8DMEEbN-nMlocD6jeQ2klgtrMhm_y1HDboB4A",
"email": "email@gmail.com"
}
}
Я пытаюсь десериализовать эту строку в класс как:
ResponseModel<AuthResponseModel> authResponse =
ResponseModel<AuthResponseModel>.fromJson(jsonDecode(response.body));
, где response.body
- строка выше.
Мои классы моделей следующие:
import 'package:json_annotation/json_annotation.dart';
part 'response.model.g.dart';
@JsonSerializable()
class ResponseModel<T> {
bool success;
@JsonKey(fromJson: _dataFromJson, toJson: _dataToJson)
T data;
ResponseModel({this.success, this.data});
factory ResponseModel.fromJson(Map<String, dynamic> json) =>
_$ResponseModelFromJson(json);
Map<String, dynamic> toJson() => _$ResponseModelToJson(this);
}
T _dataFromJson<T>(Map<String, dynamic> input) => input['data'] as T;
Map<String, dynamic> _dataToJson<T>(T input) => {'data': input};
и
import 'package:json_annotation/json_annotation.dart';
part 'auth_response.model.g.dart';
@JsonSerializable()
class AuthResponseModel {
String accessToken;
String email;
AuthResponseModel({this.accessToken, this.email});
factory AuthResponseModel.fromJson(Map<String, dynamic> json) =>
_$AuthResponseModelFromJson(json);
Map<String, dynamic> toJson() => _$AuthResponseModelToJson(this);
}
Но при попытке десериализации этой строки в эту обобщенную c модель я получаю data
как ноль. Пожалуйста, помогите мне определить причину этого root.