【发布时间】:2019-04-20 20:59:01
【问题描述】:
我尝试通过以下代码从 json 中获取数据,但在此过程中出现错误(“List”类型不是“Map”类型的子类型)。请在这方面帮助我
json结构如下
[{id: 1, fname: Semester Fees, sname: 1st Semester, fee_amount: 4000, status: 0}, {id: 2, fname: Admission Fees, sname: 2nd Semester, fee_amount: 4000, status: 0}]
String url = 'http://192.168.42.124/my_payment/getcoursefee.php';
List data;
Future<String> makeRequest() async {
var response = await http
.post(Uri.encodeFull(url), headers: {"Accept": "application/json"},
body: {
"student_id": "261",
});
setState(() {
var extractdata = json.decode(response.body);
Student student =new Student.fromJson(extractdata);
print(student.studentId);
print(extractdata);
});
}
@override
void initState() {
this.makeRequest();
}
我的学生班级在下面
class Student{
String studentId;
Student({
this.studentId,
});
factory Student.fromJson(Map<String, dynamic> parsedJson){
return Student(
studentId: parsedJson['id'],
);
}
}
【问题讨论】:
-
您示例中的 JSON 是 List,而不是 Map。那么,您有什么不清楚的地方?
-
如何获取列表值
-
问题是您正在获取 JSON 列表,并且您正在尝试将其传递给预期为 Map 的构造函数。而且你正在传递多个实体。您必须将列表拆分为循环并从内部的这些实体创建多个对象。查看@AndreyTurkovsky 解决方案,这就是您想要的!