arrays - Flutter JSON数组解析出错:异常:类型'(动态)=> xxx不是类型'(Map) => 列表' 离开'
问题描述
对不起,如果它重复了这个问题,但我没有找到解决方案。
错误:
例外:类型 '(dynamic) => PostalModel' 不是类型 '(Map<String, dynamic>) => List' of 'f' 的子类型
我做了什么:
调用 API:
Future<PostalModel> fetchPhotos(http.Client client) async { final response = await client.get('https://api.postalpincode.in/pincode/364710'); // Use the compute function to run parsePhotos in a separate isolate. return compute(parsePostalPincode, response.body); }
解析 JSON:
// A function that converts a response body into a List. PostalModel parsePostalPincode(String responseBody) { print(responseBody); final parsed = jsonDecode(responseBody).cast<Map<String, dynamic>>(); print('Parsed : $parsed'); //Getting Log OUTPUT PostalModel postalModel = parsed.map<List<PostalModel>>((json) => PostalModel.fromJson(json)); print('Postal Model : $postalModel'); //Getting Log OUTPUT return postalModel; }
在正文中绑定数据:
body: FutureBuilder<PostalModel>( future: fetchPhotos(http.Client()), builder: (context, snapshot) { print('snapshot $snapshot'); // Getting Error Here // "AsyncSnapshot<PostalModel>(ConnectionState.done, null, Exception: type '(dynamic) => PostalModel' is not a subtype of type '(Map<String, dynamic>) => List<PostalModel>' of 'f')" if (snapshot.hasError) print(snapshot.error); return snapshot.hasData ? PostOfficeList(postOfficeList: snapshot.data.postOffice) : Center(child: CircularProgressIndicator()); }, ),
您可以从 API Link 检查 JSON,我已经从这里创建了一个模型类。
解决方案
API 返回 JSON 数组,而不是 JSON 对象,因此是 List,而不是 Map。
即如果您的模型类名称是用户,用户 JSON 是 JSON 数组的第一个元素。
因此,要获取第一个元素,请使用第一个索引。内部获取信息更新
return Users.fromJson(jsonresponse[0]);
推荐阅读
- apache-poi - POI的多级和主要组之间的行重叠无效
- angular - 如何使用 API 获得预先输入的建议
- database - 为漏洞利用数据库构建 CLI
- regex - WAF 规则通过 Cloud Front 拒绝带有脚本标签的查询参数
- ajax - 在烧瓶中使用 ajax 渲染模板
- oauth - 向用户公开 Slack 用户令牌是否安全?
- linux - 删除日志数据以重新获得 oracle 中的可用硬盘空间
- python - 将 PDF 中的 Fortran 代码提取到文本文件中?
- python - 基于旧 URL 的 Django 重定向 URL
- javascript - 由于 useEffect 重新渲染,图表重复