【问题标题】:unable to retrieve object inside object无法检索对象内的对象
【发布时间】:2021-05-07 14:47:34
【问题描述】:

我是新来的颤振。我正在尝试从 api 获取响应。我收到 200 的响应,但无法检索其中的特定对象。

请查看下面的模型类并建议我做错了什么

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);
}

我收到如下错误

NoSuchMethodError:类 '_InternalLinkedHashMap' 没有具有匹配参数的实例方法 'map'。

Acutall 预期的 json 低于

{
    "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": "steve.jobs@apple.com",
                        "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
                            }
                        ]
                    }
                ]
            }
        ]
    }
}

【问题讨论】:

  • 您试图解析来自Map 类的值,但您的实现不支持map 方法(List 中的map 给出1 个参数,Map 中的map - 2参数)。您可以从 JSON 中添加 courses 值吗?
  • 请检查..我已经添加了它

标签: flutter dart flutter-layout


【解决方案1】:

你需要直接解析courseDetails,它是一个对象,而不是MapList

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

【讨论】:

    猜你喜欢
    • 2013-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多