flutter - 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;
}
解决方案
这很可能是因为标题 - 它们需要是类型Map<String, String>
,但您只是将它们定义为 Map,因此 Dart 为您分配给它的值选择最有效的 Map 类型,最终_InternalLinkedHashMap
成为某些原因不是Map<String, String>
. 我想更具体一点,但在 Flutter SDK 中搜索“_InternalLinkedHashMap”并没有显示任何结果,所以我不知道实现细节。
推荐阅读
- java - 为什么可以在java的抽象类中声明瞬态变量?
- reactjs - 如何在子组件中传递泛型类型?
- java - 当我尝试使用 java 上传文件时出现此错误系统找不到指定的文件 (tmp)
- java - android 跳过了 44 帧!应用程序可能在其主线程上做了太多工作
- java - 在 Android 上运行时修改方法定义的注解字符串参数
- javascript - 结合对象数组的特定属性
- azure-devops - 在 azure 管道 yaml 中获取合并的分支名称
- reactjs - 如何在具有 ReactJs 代码的 Wildfly 中配置静态 index.html
- matlab - 以下 .sh 脚本是否有资格被并行处理?
- javascript - ReactJS - 仅在 ComponentDidMount 之后调用函数一次