【问题标题】:flutter :how can I fetch data from json?颤振:如何从 json 中获取数据?
【发布时间】: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 解决方案,这就是您想要的!

标签: json flutter


【解决方案1】:
List<Map<String, dynamic>> extractdata = json.decode(response.body);
for (map in extractdata) {
  Student student = new Student.fromJson(map);
  print(student.studentId);
  print(map);
}

像这样的东西

【讨论】:

    猜你喜欢
    • 2021-03-26
    • 2020-11-17
    • 2021-03-21
    • 2022-10-06
    • 2019-11-21
    • 2021-02-16
    • 2021-04-24
    • 2021-08-11
    • 2021-03-17
    相关资源
    最近更新 更多