尝试获取 json 响应时出错 [Flutter]
Posted
技术标签:
【中文标题】尝试获取 json 响应时出错 [Flutter]【英文标题】:Error from trying to get the json response [Flutter] 【发布时间】:2021-06-17 19:07:49 【问题描述】:我尝试通过从服务器获取 json 响应来调用数据。
Future<List<Users>> getUserLogin() async
String url= login_url;
var res = await http.get(url);
if(res.statusCode==200)
var list = json.decode(res.body) as List;
print(list);
List<Users> users = list.map((i)=>Users.fromJson(i)).toList();
print(users);
return users;
else
print("bad request");
但是,我收到此错误消息,无法获取数据。
[ERROR:flutter/lib/ui/ui_dart_state.cc(177)] Unhandled Exception: type '_InternalLinkedHashMap<String, dynamic>' is not a subtype of type 'List<dynamic>' in type cast
顺便说一下,这是我尝试调用的json数据。
"customer_id":4,
"username":"aa",
"password":"bb",
"firstname":"a",
"lastname":"b",
"birthday":"Feb 15, 2021",
"phone":"906583794",
"cus_email":"aaa@gmail.com"
【问题讨论】:
【参考方案1】:我如何将我获得的数据返回到“用户”,因为它仍然是 json 数据,如果我返回超过 1 次,另一个将是死代码。
功能:
Future<bool> checkLogin(String username,String password) async
if(username.isEmpty||password.isEmpty)
print("Invalid username or password");
return false;
String url = login_url;
url = url.replaceFirst("p1", username);
url = url.replaceFirst("p2", password);
var result = await http.get(url);
var data = json.decode(result.body);
if(username==data["username"]&&password==data["password"])
print(result.body);
Users users = Users.fromJson(json.decode(result.body));
return true;
else
return false;
结果.正文:
"customer_id":4,"username":"aa","password":"bb","firstname":"a","lastname":"b","birthday":"Feb 15, 2021","phone":"906583794","cus_email":"aaa@gmail.com"
【讨论】:
【参考方案2】:根据你传递的响应对象,你必须修改从列表返回给用户的数据类型,因为你期望的这个json不是一个数组而是一个对象。
解释清楚后,您应该:
修改函数的返回类型:
Future<User> getUserLogin() async ...
验证 OK 响应 (200) 后,试试这个:
return User user = User.fromJson(res.body);
【讨论】:
您好,我刚试过,但是“res.body”这个词有错误:“错误:参数类型'String'不能分配给参数类型'Map '。” 试试这个:return User user = User.fromJson(json.decode(res.body));
它返回“Instance of 'Users'”,数据仍然为空?
您能提供对请求的响应吗? “res.body”的值
根据您的问题,我还尝试打印另一个现有函数的 res.body ,我发现可以使用该函数调用数据。对不起,我错了。 ? 但是,我还有另一个问题。我会将问题和功能作为另一个答案发布。以上是关于尝试获取 json 响应时出错 [Flutter]的主要内容,如果未能解决你的问题,请参考以下文章
使用flutter和php创建用户登录时解析json数据时出错
Flutter - 无法将所有 json 数据从 api 响应保存到 Iterable List 编辑:(无法从可迭代列表中获取数据)