问题描述
我正在向服务器发出HTTP请求,该服务器使用以下JSON进行响应:
{
"message": "The given data was invalid.","errors": {
"email": ["Email is required"]
}
}
我正在像这样从响应中分配数据:
Future login(String email,String password) async {
...
Map<String,dynamic> data = json.decode(response.body);
final List<String> emailErrors = data['errors']['email'];
final List<String> passwordErrors = data['errors']['password'];
}
尝试执行此操作后,会出现以下错误:
未处理的异常:类型“列表”不是类型“列表”的子类型
好像使用类型dynamic
,如果以后尝试为任何类型设置类型注释,将几乎引发错误。该如何解决?
解决方法
由于data['errors']['email']
返回了List<dynamic>
,因此出现此错误。
您必须像这样将项目投射到String
上:
final List<String> emailErrors = data['errors']['email'].cast<String>()