flutter - Flutter:如何将“模型实例”从 json_serializable 包含到 http post body?
问题描述
var user = userModel(userName) as Map;
print(user);
// var _response =
await http.post(
Uri.parse('urllll'),
headers: <String, String>{
'Content-Type': 'application/json; charset=UTF-8',
},
body: user);
我正在尝试包含user
在http-post-body
using 中json_serializable
。但是,我收到Invalid argument(s): Invalid request body "Instance of 'userModel'".
错误。
是否可以包含这样的内容,或者我必须解码Map
才能发送它?如果是这种情况,那么包含的意义 Map<String, dynamic> toJson() => _$userModelToJson(this);
何在?
解决方案
首先在一个类中创建一个模型,并在模型中设置将类实例转换为的函数,Json
反之亦然。
class MyModel {
final int id;
final String name;
MyModel(this.id, this.name);
factory MyModel.fromMap(Map<String, dynamic> json) {
return MyModel(json['ID'], json['Name']);
}
Map<String, dynamic> toJson() => {
'ID': id,
'Name': name,
};
}
然后然后使用toJson()
定义的函数将实例转换为Json字符串
import 'dart:convert';
import 'package:http/http.dart' as http;
Future<bool> postMethod(MyModel myModel) async {
var jsonBody = jsonEncode(myModel.toJson());
try {
final response = await http.post(
Uri.parse("your-url"),
headers: <String, String>{
'Content-type': 'application/json'
},
body: jsonBody,
);
if (response.statusCode == 200) {
return true;
} else {
return false;
}
} catch (e) {
return false;
}
}
推荐阅读
- java - Flink - TimeoutException:ID为someId的TaskManager的心跳超时
- ruby - 独立于平台为 Ruby 中的 /etc/shadow 生成模块化加密格式 (MFC) SHA512 的 Linux 密码
- mongodb - 我在哪里可以获得DocuementDB集群的确切使用存储
- python - IBM Watson Visual Recognition 上自定义模型的错误分类
- shell - 使用 shell 脚本命令从文本中提取 UUID 字符串
- react-native - `useAuthRequest` 总是返回 `dismiss`
- html - 使用 window.print() 时创建封面
- javascript - Document.querySelector 返回 NULL 值 - 脚本位于页面底部
- swift - MapBox 注释标题在 Swift 中居中
- notepad++ - 制作大括号时如何使notepad ++转到下一行