首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在颤振中解析JsonData时出现意外错误

在颤振中解析JsonData时出现意外错误
EN

Stack Overflow用户
提问于 2020-03-23 15:57:02
回答 3查看 423关注 0票数 0

我试图解析json列表数据,这样我就可以保存到一个对象中。但我每次都会犯错误,我不知道为什么。

Json数据

代码语言:javascript
复制
{
    "status": "success",
    "data": [
        {
            "distro_name": "Ikeja Electric (IKEDC)",
            "service_id": "ikeja-electric",
            "type": [
                "prepaid",
                "postpaid"
            ]
        },
        {
            "distro_name": "Eko Electric (EKEDC)",
            "service_id": "eko-electric",
            "type": [
                "prepaid",
                "postpaid"
            ]
        },
        {
            "distro_name": "Ibadan Electric (IBEDC)",
            "service_id": "ibadan-electric",
            "type": [
                "prepaid",
                "postpaid"
            ]
        },
        {
            "distro_name": "Kano Electric (KEDCO)",
            "service_id": "kano-electric",
            "type": [
                "prepaid",
                "postpaid"
            ]
        },
        {
            "distro_name": "Jos Electricity Distribution (JED)",
            "service_id": "jos-electric",
            "type": [
                "prepaid",
                "postpaid"
            ]
        },
        {
            "distro_name": "Port-Harcourt Electric (PHED)",
            "service_id": "portharcourt-electric",
            "type": [
                "prepaid",
                "postpaid"
            ]
        }
    ]
}

这是我的数据模型类。

模型

代码语言:javascript
复制
class Providers {
  String distro_name;
  String service_id;
  dynamic type;

  Providers(this.distro_name, this.service_id, this.type);


  Providers.fromJson(Map<String, dynamic> json):
        distro_name = json['distro_name'],
        service_id = json['service_id'],
        type = json['type'];

}

Main.dart

代码语言:javascript
复制
fetchProviders() async{
    try {
      final response = await http.get(
        uri,
        headers: {'Content-Type': 'application/json','Authorization': 'Bearer ' + _bloc.bearerToken, },
      );
      final responseJson = json.decode(response.body);
      for (var u in responseJson["data"]) {
       Providers provider = Providers(
            u["distro_name"],
            u["service_id"],
             u["list"]);
      providerList.add(provider);
      }
      return responseJson;
    } catch (exception) {
      print(exception);
    }
  }

这就是我所犯的错误。

代码语言:javascript
复制
 NoSuchMethodError: The method 'add' was called on null.
I/flutter ( 1366): Receiver: null

我真不知道为什么我会犯这个错误。我的api上没有空值,过去我使用过这种json结构。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-03-23 16:46:37

初始化providerList

代码语言:javascript
复制
var providerList = </* type */>[]
代码语言:javascript
复制
      for (var u in responseJson["data"]) {
       Providers provider = Providers(
            u["distro_name"],
            u["service_id"],
             u["list"]);
      providerList.add(provider);
      }

使用列表地图:

代码语言:javascript
复制
providerList = responseJson["data"].map((u) => Providers(
                 u["distro_name"],
                 u["service_id"],
                 u["list"],
               )).cast<String>().toList();
票数 1
EN

Stack Overflow用户

发布于 2020-03-24 08:02:45

模型

代码语言:javascript
复制
class Providers {
  String distro_name;
  String service_id;
  dynamic type;

  Providers(this.distro_name, this.service_id, this.type);

  Providers.fromJson(Map<String, dynamic> json) => Providers(
    json['distro_name'],
    json['service_id'],
    json['type'],
 );

}

Main.dart

代码语言:javascript
复制
fetchProviders() async{
    try {
      final response = await http.get(
        uri,
        headers: {'Content-Type': 'application/json','Authorization': 'Bearer ' + _bloc.bearerToken, },
      );
      final responseJson = json.decode(response.body);
      responseJson.forEach((data){
       Providers provider = Providers.fromJson(data);
       providerList.add(provider);
     return responseJson;
    });
    } catch (exception) {
      print(exception);
    }
  }
票数 0
EN

Stack Overflow用户

发布于 2020-03-24 09:03:35

模型

代码语言:javascript
复制
       class Providers {
        String distro_name;
        String service_id;
       dynamic type;

 Providers(this.distro_name, this.service_id, this.type);


 factory Providers.fromJson(Map<String, dynamic> json){

    return Providers(
       distro_name = json['distro_name'],
       service_id = json['service_id'],
        type = json['type'],
     );
     }
     }

main.dart

代码语言:javascript
复制
fetchProviders() async{
try {
  final response = await http.get(
    uri,
    headers: {'Content-Type': 'application/json','Authorization': 'Bearer ' + _bloc.bearerToken, },
  );
  final responseJson = json.decode(response.body);
  for (var u in responseJson['data']) {
   Providers provider = Providers.fromJson(u);
   providerList.add(provider);
 return responseJson;
     }
  } 
  catch (exception) {
  print(exception);
    }
  }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60817077

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档