首页 > 解决方案 > Flutter 在将数据发送到服务器时出现 _InternalLinkedHashMap 错误

问题描述

在制作了两个类来创建这个 json 结构之后:

{
  "data": [
    {
      "staff_id": "1111",
      "class_id": "222222",
      "enter_date": "33333333",
      "exit_date": "4444444444444"
    }
  ]
}

我没有任何问题,但是当我尝试将此结构发送到服务器时出现错误:

获取错误类型'_InternalLinkedHashMap'不是'Map'类型的子类型

我的 json 结构类:

@JsonSerializable()
class RestData {
  final List<Data> data;

  RestData(this.data);

  factory RestData.fromJson(Map<String, dynamic> json) => _$RestDataFromJson(json);

  Map<String, dynamic> toJson() => _$RestDataToJson(this);
}

@JsonSerializable()
class Data {
  @JsonKey(name: 'staff_id')
  String staffId;

  @JsonKey(name: 'class_id')
  String classId;

  @JsonKey(name: 'enter_date')
  String enterDate;

  @JsonKey(name: 'exit_date')
  String exitDate;

  Data(this.staffId, this.classId,this.enterDate, this.exitDate);

  factory Data.fromJson(Map<String, dynamic> json) => _$DataFromJson(json);
  Map<String, dynamic> toJson() => _$DataToJson(this);
}

制作数据并发送到服务器:

List<Data> list = [];
list.add(Data('1111', '222222', '33333333', '4444444444444'));

RestData restData = RestData(list);

print(json.encode(restData.toJson()));

/*result of print: {"data":[{"staff_id":"1111","class_id":"222222","enter_date":"33333333","exit_date":"4444444444444"}]}*/


Map userHeader = {"Content-type": "application/json", "Accept": "application/json"};

final response = await http
    .post('http://sample.com', body: json.encode(restData.toJson()), headers: userHeader)
    .timeout(Duration(seconds: 60));

if (response.statusCode == 200) {
  return true;
} else {
  return false;
}

标签: flutterdart

解决方案


这很可能是因为标题 - 它们需要是类型Map<String, String>,但您只是将它们定义为 Map,因此 Dart 为您分配给它的值选择最有效的 Map 类型,最终_InternalLinkedHashMap成为某些原因不是Map<String, String>. 我想更具体一点,但在 Flutter SDK 中搜索“_InternalLinkedHashMap”并没有显示任何结果,所以我不知道实现细节。


推荐阅读