关键词: json http请求 响应 数据类型 类型转换。
当你使用http(例如dio库)请求,结果后台返回的数据是json时,dart是无法直接使用json的。
甚至你对结果做类型判断
HttpRequest.request("/").then(value){
if(value is String) {
print('${value} is string');
} else if (value is int) {
print('${value} is int');
} else if (value is double) {
print('${value} is double');
} else {
print('${value} is other type');
}
}
你会发现,value什么类型都不是。。。。。。。。
这就到了坑的地方了,网上大部分资料,都是直接教你使用json.decode,结果你无论这么试都是失败,因为这个数据连String都不是,根本无法正确转换成Map或者List。
正确方法是
需要先将响应数据 强制转换成 字符串 类型
然后再通过dart自带的api(需要import 'dart:convert';) json.decode()
将json格式的字符串转换成Map 或者List
HttpRequest.request("/").then(res){
var value = res.toString();
Map item = json.decode(value);
}
这样,才算是将响应数据成功转换成Map
今天写项目的时候,又遇到了json的问题,想起当时踩到这个坑,到处找资料和文档,但大多都是含糊不清,所以今天就简单写下最基本的处理办法。当然实际项目中要另外构建个Model类。