首页 > 解决方案 > 将 json 解析为模型失败

问题描述

我正在尝试向listview显示数据,但它没有显示任何内容。下面有json,我做错了什么,我厌倦了在api调用中打印数据但我可以打印数据但不能在listview中打印,我有很难理解我做错了什么或正确的事情。请帮助我

if (response.statusCode == 200) {
      try {
        if (status == true) {

          var company_list = value['doc'];
          for (int i = 0; i < company_list.length; i++) {
            print(company_list);
            var mobile_list = company_list["mobile"];
            var email_list = company_list["email"];
            company_model.add(CompanyModel.fromJson(company_list,mobile_list,email_list));
          }
          setState(() {
            print("UI Updated");
          });
        } else {
          final snackBar = SnackBar(content: Text(message));
          _scaffoldKey.currentState.showSnackBar(snackBar);
        }
      } catch (e) {
        e.toString();
      }
    } else {
      final snackBar = SnackBar(content: Text(message));
      _scaffoldKey.currentState.showSnackBar(snackBar);
    }

json

{
    "status":true,
    "doc":{
        "mobile":[
            "9961256754",
            "8974525672"
        ],
        "email":[

        ],
        "_id":"5f3a0dfe88b9d50453e92133",
        "name":"MRC Labour",
        "terms":{
            "english":"We Shall not be liable for any disputes arising between the users and the 
         labourers",
            "malayalam":"We Shall not be liable for any disputes arising between the users and the 
         labourers"
        }
    }
}

模型

class CompanyModel {
  String id = "";
  String mobile = "";
  String email = "";
  String name = "";
  String english = "";
  String malayalam = "";

  CompanyModel({this.id, this.mobile, this.email, this.name, this.english,this.malayalam});

  CompanyModel.fromJson(json,mobile_list,email_list)
      : id = json['_id'].toString(),
        mobile = mobile_list,
        email = email_list,
        name = json['name'].toString(),
        english = json['terms']['english'].toString(),
        malayalam = json['terms']['malayalam'].toString();
}

我得到的数据,

当调试器命中这一行时,它会中断而没有任何错误company_model.add(CompanyModel.fromJson(data,mobile_list,email_list));

这是列表视图代码

   Container(
          height: 80,
          width: 100,
          color: Colors.blueGrey[100],
          padding: EdgeInsets.all(10),
          child: ListView.separated(
            separatorBuilder: (BuildContext context, int index) =>
            const Divider(),
            itemCount: company_model.length,
            itemBuilder: (BuildContext context, int index) {
              CompanyModel data = company_model[index];
              print(data);
              return Container(
                height: 10,
                color: Colors.green,
                child: Text(data.name.toString(),style: TextStyle(color: Colors.black),),
              );
            },
          ),
        ),

标签: flutter

解决方案


创建模型的最佳方法是在下面的链接中 https://app.quicktype.io/

只需将您的 json 作为左侧的输入,然后从左侧选择 dart 作为语言,您就可以开始了。


推荐阅读