首页 > 解决方案 > 我在解析 json 时在 null 上调用了“cast”方法

问题描述

我的 API 响应中有以下 json:

{
    "data": [{
        "orderid": "123",
        "item_names": [
            "item1",
            "item2",
            "item3",
            "item4"
        ]
    }]
}

我在飞镖中有以下模型类:

class OrderListResponse {
  List<OrderListItemModel> data;

  OrderListResponse({this.data});

  OrderListResponse.fromJson(Map<String, dynamic> json) {
    if (json['data'] != null) {
      data = new List<OrderListItemModel>();
      json['data'].forEach((v) {
        data.add(new OrderListItemModel.fromJson(v));
      });
    }
  }

  Map<String, dynamic> toJson() {
    final Map<String, dynamic> data = new Map<String, dynamic>();
    if (this.data != null) {
      data['data'] = this.data.map((v) => v.toJson()).toList();
    }
    return data;
  }
}

class OrderListItemModel {
  String id;
  List<String> items;

  OrderListItemModel({this.id,
  this.items,

  });

  OrderListItemModel.fromJson(Map<String, dynamic> json) {
    id = json['id'];
    items = json['item_names'].cast<String>();
  }

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

当我将在 API 中获取数据时,它给了我一个错误 The method 'cast' was called on null。我不明白为什么它会抛出这个错误。有什么解决方案吗?

标签: flutterdart

解决方案


我建议你使用这个网站来转换你的 jsons

依此类推,要修复您需要更改的代码

  OrderListItemModel.fromJson(Map<String, dynamic> json) {
    id = json['id'];
    items = json['item_names'].cast<String>();
  }

对此

   OrderListItemModel.fromJson(Map<String, dynamic> json) {
    id = json['orderid'];
    items = json["item_names"] == null? [] : List<String>.from(json["item_names"].map((x) => x))
}

推荐阅读