从json http请求解析dart模型时出错

时间:2020-06-03 07:09:09

标签: android json http flutter dart

我在将数据从json解析为dart模型时遇到麻烦,我尝试了在线转换器,但它导致错误type '_InternalLinkedHashMap<String, dynamic>' is not a subtype of type 'String',此json对象是响应正文,我已在控制台中将其打印出来并且可以正常工作很好,但是我被困在将json对象解析为dart类模型

这是我的代码:

  1. Json对象
{
    "success": true,
    "data": {
        "sum": 1200,
        "max": 0,
        "history": [
            {
                "id": 3,
                "user_activity_id": 2,
                "qty": 300,
                "size": 4,
                "timestamp": "2020-06-03T05:29:37.000Z"
            }
        ]
    }
}
  1. Dart类模型
class WaterConsumeToday {
  bool success;
  Data data;

  WaterConsumeToday({this.success, this.data});

  WaterConsumeToday.fromJson(Map<String, dynamic> json) {
    success = json['success'];
    data = json['data'] != null ? new Data.fromJson(json['data']) : null;
  }

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

class Data {
  int sum;
  int max;
  List<History> history;

  Data({this.sum, this.max, this.history});

  Data.fromJson(Map<String, dynamic> json) {
    sum = json['sum'];
    max = json['max'];
    if (json['history'] != null) {
      history = new List<History>();
      json['history'].forEach((v) {
        history.add(new History.fromJson(v));
      });
    }
  }

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

class History {
  int id;
  int userActivityId;
  int qty;
  int size;
  String timestamp;

  History({this.id, this.userActivityId, this.qty, this.size, this.timestamp});

  History.fromJson(Map<String, dynamic> json) {
    id = json['id'];
    userActivityId = json['user_activity_id'];
    qty = json['qty'];
    size = json['size'];
    timestamp = json['timestamp'];
  }

  Map<String, dynamic> toJson() {
    final Map<String, dynamic> data = new Map<String, dynamic>();
    data['id'] = this.id;
    data['user_activity_id'] = this.userActivityId;
    data['qty'] = this.qty;
    data['size'] = this.size;
    data['timestamp'] = this.timestamp;
    return data;
  }
}

i使用此var responseJson = json.decode(response.body.toString());解码json对象。

谢谢..

0 个答案:

没有答案