Получение 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

Пожалуйста, помогите мне определить, что я здесь делаю неправильно. Почему я не могу понять ценность данных?

0 ответов

Другие вопросы по тегам