颤振:如何从 json 中获取数据?

Posted

技术标签:

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

像这样的东西

【讨论】:

以上是关于颤振:如何从 json 中获取数据?的主要内容,如果未能解决你的问题,请参考以下文章

从json颤振中获取数组

如何从json获取数据中对两个或多个值求和

如何从提供的链接中获取数据?

试图从世界时间 api 颤振发出 json 请求

无法从 api 获取数据,Future 总是返回 null - 颤振

如何在颤振中解析复杂的json