angelina
angelina

Reputation: 99

unable to retrieve object inside object

I am new to flutter . i am trying to fetch responnse from api . i am getting response as 200 but unable to retreive particular object inside it .

please have a look at a model class below and suggest me what wrong i am doing

class Response {
  bool success;
  List<dynamic> errors;
  List<CourseParent> courses;
  Batches coursedetail;

  Response({this.success,this.errors,this.courses,this.coursedetail});

  factory Response.fromJson(Map<String, dynamic> map) {
return Response(
    errors: map['errors'],
    success: map['success'],
  courses: map['courses'] != null
      ? map['courses'].map<CourseParent>((json) => CourseParent.fromJson(json)).toList()
      : null,
  coursedetail: map['courseDetails'] != null
      ? map['courseDetails'].map<Batches>((json) => Batches.fromJson(json))
      : null,
);

}

  Map<String, dynamic> toJson() {
    return {"success": success, "errors": errors,  "courses": courses, "courseDetails" : coursedetail};
  }



  @override
  String toString() {
    return 'Response{ success: $success, errors: $errors , courses: $courses, courseDetails: $coursedetail }';
  }

}

List<Response> profileFromJson(String jsonData) {
  final data = json.decode(jsonData);
  return List<Response>.from(data.map((item) => Response.fromJson(item)));
}



Response responseFromJson(String str) {
  final jsonData = json.decode(str);
  print("##-response"+jsonData.toString());
  return Response.fromJson(jsonData);
}


String responseToJson(Response data) {
  final jsonData = data.toJson();
  print("##--encoding"+json.encode(jsonData));
  return json.encode(jsonData);
}

i am getting the error as below

NoSuchMethodError: Class '_InternalLinkedHashMap<String, dynamic>' has no instance method 'map' with matching arguments.

Acutall expected json is below

{
    "success": true,
    "courseDetails": {
        "courseId": 34,
        "title": "Taxi Drivers Qualification Program",
        "code": "TX001",
        "image": "uploads\\9e5dba0e-0e25-4247-a3fa-a2a404aadacd.jpg",
        "target": 0,
        "batches": [
            {
                "batchId": 41,
                "courseId": 34,
                "instructorId": 22,
                "venueId": 1,
                "startDate": "2021-01-03T00:00:00",
                "endDate": "2021-01-17T00:00:00",
                "startTime": "2021-01-03T09:17:00",
                "endTime": "2021-01-03T12:17:00",
                "capacity": 25,
                "gender": 2,
                "instructor": [
                    {
                        "instructorId": 22,
                        "civilId": "931285",
                        "forceId": "123",
                        "title": 15,
                        "fullname": "Mansoor Abdulrahim Al Rasbi",
                        "email": "[email protected]",
                        "mobile": "99699633",
                        "type": 1
                    }
                ],
                "venue": [
                    {
                        "venueId": 1,
                        "name": "B22",
                        "branchId": 1,
                        "branch": [
                            {
                                "branchId": 1,
                                "name": "Head Quarters - Muscat",
                                "capacityTheoretical": 175,
                                "capacityPractical": 125
                            }
                        ],
                        "bookingFees": 25
                    },
                    {
                        "venueId": 21,
                        "name": "Meetings Hall",
                        "branchId": 1,
                        "branch": [
                            {
                                "branchId": 1,
                                "name": "Head Quarters - Muscat",
                                "capacityTheoretical": 175,
                                "capacityPractical": 125
                            }
                        ],
                        "bookingFees": 20
                    },
                    {
                        "venueId": 41,
                        "name": "Store Muscat Branch",
                        "branchId": 1,
                        "branch": [
                            {
                                "branchId": 1,
                                "name": "Head Quarters - Muscat",
                                "capacityTheoretical": 175,
                                "capacityPractical": 125
                            }
                        ]
                    }
                ]
            }
        ]
    }
}

Upvotes: 0

Views: 202

Answers (1)

fartem
fartem

Reputation: 2531

You need to parse courseDetails directly, it is an object, not Map or List:

coursedetail: map['courseDetails'] != null ? Batches.fromJson(map['courseDetails']) : null;

Upvotes: 1

Related Questions