未处理的异常:InternalLinkedHashMap'不是'List类型的子类型
问题内容:
我正在尝试从服务器获取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’不是类型’List的子类型
可能是什么原因?
问题答案:
这有两种可能会出错的常见方法:
- 如果您的响应是一个json对象,例如
[ { key1: value1, key2: value2, key3: value3, }, { key1: value1, key2: value2, key3: value3, }, .....
]
然后,我们使用 data[0]["name"]
,而不是, data[0].name
除非我们强制转换为具有name属性的对象,否则我们将无法使用 data[0].name
我们这样投data = json.decode(response.body).cast<ObjectName>();
ObjectName
可以是您想要的任何对象(内置或自定义)。但是请确保它具有name属性
- 如果您的响应是一个JSON对象,例如
{ dataKey: [ { key1: value1, key2: value2, key3: value3, } ]
}
然后json.decode
将返回一个 Map ,而不是一个 List
Map<String, dynamic> map = json.decode(response.body);
List<dynamic> data = map["dataKey"];
print(data[0]["name"]);