如何在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

回到顶部