Получение null при десериализации в общий класс с помощью средства сборки
Я пытаюсь десериализовать ответ api в общий класс с помощью средства сборки.
Мой ответ api выглядит следующим образом:
{
"success": true,
"data": {
"access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJlbWFpbCI6ImFAYi5jb20iLCJpYXQiOjE1OTAzNDA0NzcsImV4cCI6MTU5MDQyNjg3N30.cR-vQ3hRJO2d7gniJ9Qbd9yZR_gurO2LShixzmmicoo",
"email": "a@b.com",
"first_name": "a",
"last_name": "b"
}
}
Я написал свои классы моделей следующим образом:
import 'package:json_annotation/json_annotation.dart';
part 'ApiResponseModel.g.dart';
@JsonSerializable(nullable: false)
class ApiResponseModel<T> {
@JsonKey(fromJson: _dataFromJson, toJson: _dataToJson)
T data;
bool success;
String message;
ApiResponseModel({this.data, this.success, this.message});
factory ApiResponseModel.fromJson(Map<String, dynamic> json) => _$ApiResponseModelFromJson(json);
Map<String, dynamic> toJson() => _$ApiResponseModelToJson(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 'LoginResponseModel.g.dart';
@JsonSerializable(nullable: false)
class LoginResponseModel {
@JsonKey(name: "access_token",)
String token;
String email;
@JsonKey(name: "first_name")
String firstName;
@JsonKey(name: "last_name")
String lastName;
LoginResponseModel(this.token, this.email, this.firstName, this.lastName);
factory LoginResponseModel.fromJson(Map<String, dynamic> json) => _$LoginResponseModelFromJson(json);
Map<String, dynamic> toJson() => _$LoginResponseModelToJson(this);
}
когда я пытаюсь десериализовать json в следующие классы, используя код, как показано ниже:
import 'dart:convert';
import 'package:relepay_app/models/ApiResponseModel.dart';
import 'package:relepay_app/models/auth/LoginResponseModel.dart';
void main() {
String responseJson =
'{"success": true, "data": { "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJlbWFpbCI6ImFAYi5jb20iLCJpYXQiOjE1OTAzNDA0NzcsImV4cCI6MTU5MDQyNjg3N30.cR-vQ3hRJO2d7gniJ9Qbd9yZR_gurO2LShixzmmicoo", "email": "a@b.com", "first_name": "a", "last_name": "b" }}';
var model =
ApiResponseModel<LoginResponseModel>.fromJson(jsonDecode(responseJson));
print(jsonDecode(responseJson)['data']);
}
Это не десериализация значения данных. то есть вывод var выглядит следующим образом:
data = null
success = true
message = null
Пожалуйста, помогите мне определить, что я здесь делаю неправильно. Почему я не могу понять ценность данных?