Próbuję przeanalizować odpowiedź z usługi internetowej i pokazać go w formacie tabeli w trzeprzu. Poniżej jest moja odpowiedź

{
    "success": true,
    "data": [{
            "id": 5,
            "roll_no": "R1005",
            "user_id": "5"
        },
        {
            "id": 6,
            "roll_no": "R1006",
            "user_id": "6"
        },
        {
            "id": 7,
            "roll_no": "R1007",
            "user_id": "7"
        },
        {
            "id": 8,
            "roll_no": "R1008",
            "user_id": "8"
        }
    ]
}

Kiedy próbuję przeanalizować powyższy JSON w trzepotanie, aby pokazać jako stół, jestem w stanie wydrukować tylko sukces

Map<String, dynamic> response = await AppHttp().getApi(donationListURL);
donationListlModel = DonationListlModel.fromJson(response);

I

DonationListlModel.fromJson(Map<String, dynamic> json) {
    success = json['success'];
    print('donation list model success $success');

    data = json['data'] != null ? new Data.fromJson(json['data']) : null;
  }

Tutaj otrzymuję błąd mówiący - type 'List<dynamic>' is not a subtype of type 'Data'

Poniżej znajduje się mój plik modelu

class DonationListlModel {
  bool success;
  Data data;

  DonationListlModel({this.success, this.data});

  DonationListlModel.fromJson(Map<String, dynamic> json) {
    success = json['success'];
    print('donation list model success $success');

    data = json['data'] != null ? new Data.fromJson(json['data']) : null;
  }

  Map<String, dynamic> toJson() {
    final Map<String, dynamic> data = new Map<String, dynamic>();
    data['success'] = this.success;
    if (this.data != null) {
      data['data'] = this.data.toJson();
    }
    print('donation list model data $data');
    return data;
  }
}

class Data {
  String id;
  String rollNo;
  String userId;

  Data(
      {this.id,
      this.rollNo,
      this.userId,
      this.parentId});

  Data.fromJson(Map<String, dynamic> json) {
    id = json['id'];
    rollNo = json['roll_no'];
    userId = json['user_id'];
    parentId = json['parent_id'];
  }

  Map<String, dynamic> toJson() {
    final Map<String, dynamic> data = new Map<String, dynamic>();
    data['id'] = this.id;
    data['roll_no'] = this.rollNo;
    data['user_id'] = this.userId;
    data['parent_id'] = this.parentId;
    
    print('donation list model data toJSON $data');
    return data;
  }
}

Jaki jest błąd

0
Siva K 28 lipiec 2020, 14:40

1 odpowiedź

Najlepsza odpowiedź

Z twojego JSON "Data" jest List obiektów Data. Musisz więc zmienić typ danych zmiennej danych do List<Data> jak poniżej

class DonationListlModel {
  bool success;
  List<Data> data;

  DonationListlModel({this.success, this.data});

  DonationListlModel.fromJson(Map<String, dynamic> json) {
    success = json['success'];
    print('donation list model success $success');

    if (this.data != null) {
      json['data'] = this.data.map((v) => v.toJson()).toList();
    }
  }

  Map<String, dynamic> toJson() {
    final Map<String, dynamic> data = new Map<String, dynamic>();
    data['success'] = this.success;
    if (this.data != null) {
      data['data'] = this.data.map((v) => v.toJson()).toList();
    }
    print('donation list model data $data');
    return data;
  }
}

class Data {
  String id;
  String rollNo;
  String userId;

  Data(
      {this.id,
        this.rollNo,
        this.userId});

  Data.fromJson(Map<String, dynamic> json) {
    id = json['id'];
    rollNo = json['roll_no'];
    userId = json['user_id'];
  }

  Map<String, dynamic> toJson() {
    final Map<String, dynamic> data = new Map<String, dynamic>();
    data['id'] = this.id;
    data['roll_no'] = this.rollNo;
    data['user_id'] = this.userId;

    print('donation list model data toJSON $data');
    return data;
  }
}
0
JideGuru 28 lipiec 2020, 11:57