如何在flutter中从json反序列化对象列表
我正在使用dart包json_serializable进行json序列化。查看flutter文档,它显示了如何反序列化单个对象,如下所示:
Future<Post> fetchPost() async { final response =
await http.get('https://jsonplaceholder.typicode.com/posts/1');
if (response.statusCode == 200) {
// If the call to the server was successful, parse the JSON
return Post.fromJson(json.decode(response.body));
} else {
// If that call was not successful, throw an error.
throw Exception('Failed to load post');
}
}
但是,我对dart不够熟悉,无法弄清楚如何对项目列表而不是单个实例执行相同的操作。
回答:
好吧,您的服务将处理作为地图的响应正文,或相应地处理地图列表。根据您所拥有的代码,您要核算1件商品。
如果响应主体是可迭代的,那么,如果我正确理解了您的问题,那么您需要进行解析并进行相应处理。
例:
Iterable l = json.decode(response.body);List<Post> posts = List<Post>.from(l).map((Map model)=> Post.fromJson(model)).toList();
其中posts是帖子列表。
:我想在这里添加清晰的注释。目的是解码返回的响应。下一步是将json对象的可迭代性转换为对象的实例。这是通过在您的类中创建fromJson方法来正确获取json并相应地实现它来完成的。下面是一个示例实现。
class Post { // Other functions and properties relevant to the class
// ......
/// Json is a Map<dynamic,dynamic> if i recall correctly.
static fromJson(json): Post {
Post p = new Post()
p.name = ...
return p
}
}
这些天,我对Dart有点抽象,希望有一个更好的实用程序来完成需要完成的任务。所以我的语法可能还差一点,但这是伪代码。
编辑
在过去的某个时候,此功能的API有所更改。我不再使用Dart编程,因此很难测试其中的一些更新。话虽这么说,但在此较新版本的dart中似乎存在投放问题,并且我更新了以上答案。它接受可迭代对象并将其转换为发布列表,然后在该列表上进行映射。
以上是 如何在flutter中从json反序列化对象列表 的全部内容, 来源链接: utcz.com/qa/409086.html