Ошибка при десериализации в класс generi c - PullRequest
0 голосов
/ 05 апреля 2020

У меня есть строка как:

{
  "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.

...