如何将特殊结构的JSON数组解析为Dart类?
解析特殊结构的API响应问题解决
问题背景
某API返回的JSON响应结构如下,是一个包含多个单键值对对象的数组:
[{"version": "v3.5"}, {"setup": true}, {"address": "e7d398b"}, {"connected": true}, {"active": true}, {"id": "ce7143"}, {"genuine": true}]
失败的尝试
- 使用quicktype生成的
Result类尝试解析,代码如下:
List<Result>.from(result.map((x) => Result.fromJson(x)));
解析失败,原因是数组中每个对象仅包含单个键,与Result类的结构不匹配。
- 尝试用Dio编写代码直接处理数组元素:
final result = response.data; var b = List.empty(growable: true); result.map((x) => b.add(x));
这段代码无法正常运行,无法访问数组元素。
可行的解析方案
通过将数组中所有单键值对对象合并为一个完整的Map,再用Result.fromJson解析,代码如下:
final result = response.data; Map<String, dynamic> map = {}; for (var e in result) { map.addAll(e); } final finalResult = Result.fromJson(map); return finalResult;
内容的提问来源于stack exchange,提问作者rrttrr
相关产品推荐
相关产品推荐

