首页 > 解决方案 > 无法在颤振网络中解析我的响应正文

问题描述

我有以下格式的响应正文:

Response body: [[{"fraud_cnt":0,"total_cnt":55364},{"fraud_cnt":1694,"total_cnt":1694}]]

我尝试在下面创建和对象

class Album {
  final String fraud_cnt;
  final int total_cnt;

  Album({
    required this.fraud_cnt,
    required this.total_cnt,
  });

  factory Album.fromJson(Map<String, dynamic> json) {
    return Album(
      fraud_cnt: json['fraud_cnt'],
      total_cnt: json['total_cnt'],
    );
  }
}

return Album.fromJson(jsonDecode(response.body));

但我得到了错误

Error: Expected a value of type 'Map<String, dynamic>', but got one of type 'List<dynamic>'

我已经尝试了所有方法来遍历它并获取里面的值,但是它不起作用,有谁知道我如何遍历它并获取值

标签: flutterdart

解决方案


你的 json 看起来有两个数组(注意两个[[)。

所以你有2个解决方案:

1 - 改变 JSON(如果可以的话)看起来像(似乎是最好的):

[{"fraud_cnt":0,"total_cnt":55364},{"fraud_cnt":1694,"total_cnt":1694}]

2 - 从您拥有的 JSON 中获取 Map<String, dynamic> (不是推荐的):

factory Album.fromJson(List<dynamic> json) {
    Map<String, dynamic> json = json.first; // need to be improved
    return Album(
      fraud_cnt: json['fraud_cnt'],
      total_cnt: json['total_cnt'],
    );
  }

推荐阅读