我正在尝试从服务器获取 JSON 响应并将其输出到控制台。
Future<String> login() async {
var response = await http.get(
Uri.encodeFull("https://etrans.herokuapp.com/test/2"),
headers: {"Accept": "application/json"});
this.setState(() {
data = json.decode(response.body);
});
print(data[0].name);
return "Success!";
}
未处理的异常:类型“_InternalLinkedHashMap ”是
不是“列表”类型的子类型
可能是什么原因?
以下是可能出错的两种常见方式:
-
如果您的响应是一个 json 数组,例如
[
{
key1: value1,
key2: value2,
key3: value3,
},
{
key1: value1,
key2: value2,
key3: value3,
},
.....
]
然后,我们使用data[0]["name"]
, not data[0].name
除非我们转换为具有 name 属性的对象,否则我们不能使用data[0].name
我们这样投data = json.decode(response.body).cast<ObjectName>();
ObjectName
可以是您想要的任何对象(内置或自定义)。但请确保它具有 name 属性
-
如果您的响应是一个 JSON 对象,例如
{
dataKey: [
{
key1: value1,
key2: value2,
key3: value3,
}
]
}
Then json.decode
将返回一个Map, not a List
Map<String, dynamic> map = json.decode(response.body);
List<dynamic> data = map["dataKey"];
print(data[0]["name"]);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)