【问题标题】:Flutter how to create a list from a json dataFlutter 如何从 json 数据创建列表
【发布时间】:2020-10-19 20:15:57
【问题描述】:

按照在线示例,我有以下代码: 将一些 json 数据制作成一个列表,但问题是数据是映射字符串形式

 Future<List<Phone>> getData() async {
    http.Response response = await http.get(
        Uri.encodeFull("http://chicken20.pythonanywhere.com/user"),
        headers: {"Accept": "application/json"});
    /*setState(() {
      phone = json.decode(response.body);
      print (phone[0]);
    });*/

    List<Phone> users = (json.decode(response.body) as List)
        .map((data) =>Phone.fromJson(data))
        .toList();
return users;
  }

我的 json 文件

{"user":[{"email":"iot3@iot.com","id":1,"password":"1234","username":"med"},{"email":"firas.slimene@gmail.com","id":2,"password":"123456789","username":"firas_96"},{"email":"ahmedmattousii77@gmail.com","id":3,"password":"07495074","username":"ahmed"},{"email":"feharou@gmail.com","id":6,"password":"1234","username":"wajdi hassyaoui"},{"email":"matt@gmail.com","id":7,"password":"1234","username":"matt"}]}

错误

 [ERROR:flutter/lib/ui/ui_dart_state.cc(157)] Unhandled Exception: type '_InternalLinkedHashMap<String, dynamic>' is not a subtype of type 'List<dynamic>' in type cast

型号 类电话{ 用户用户;

  Phone({this.user});

  Phone.fromJson(Map<String, dynamic> json) {
    user = json['user'] != null ? new User.fromJson(json['user']) : null;
   
  }

  Map<String, dynamic> toJson() {
    final Map<String, dynamic> data = new Map<String, dynamic>();
    if (this.user != null) {
      data['user'] = this.user.toJson();
     


    }
    return data;
  }
}

class User{
  String email;
  String password;

  User({this.email,this.password});

  User.fromJson(Map<String, dynamic> json) {
    email = json['email'];
    password=json['password'];
  }

  Map<String, dynamic> toJson() {
    final Map<String, dynamic> data = new Map<String, dynamic>();
    data['email'] = this.email;
    data['password'] = this.password;
    return data;
  }
}

我需要一些帮助,谢谢

【问题讨论】:

    标签: flutter dart


    【解决方案1】:

    你得到的json的'user'对象中的用户列表

    Future<List<Phone>> getData() async {
        http.Response response = await http.get(
            Uri.encodeFull("http://chicken20.pythonanywhere.com/user"),
            headers: {"Accept": "application/json"});
        /*setState(() {
          phone = json.decode(response.body);
          print (phone[0]);
        });*/
    
        List<Phone> users = (json.decode(response.body)['user'] as List)
            .map((data) =>Phone.fromJson(data))
            .toList();
        return users;
    }
    

    【讨论】:

      猜你喜欢
      • 2021-07-06
      • 1970-01-01
      • 2020-06-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-23
      • 2013-11-06
      • 2019-09-26
      相关资源
      最近更新 更多