乐闻世界logo
搜索文章和话题

How to Deserialize a list of objects from json in flutter

1 个月前提问
1 个月前修改
浏览次数15

1个答案

1

在Flutter中,从JSON反序列化对象列表是一个常见的需求,尤其是在处理网络请求和响应时。我们可以通过几个步骤来实现这一功能。下面我将详细描述这一过程,并提供一个具体示例。

步骤 1: 定义数据模型

首先,我们需要定义一个类来表示JSON数据结构。假设我们有一个JSON对象列表,每个对象表示一个用户,包括用户的ID、姓名和电子邮件地址。

dart
class User { final int id; final String name; final String email; User({this.id, this.name, this.email}); // 从JSON反序列化 factory User.fromJson(Map<String, dynamic> json) { return User( id: json['id'], name: json['name'], email: json['email'], ); } }

步骤 2: 编写解析函数

接下来,我们需要编写一个函数来解析JSON数组,并将其转换为用户对象的列表。

dart
List<User> parseUsers(String responseBody) { final parsed = json.decode(responseBody).cast<Map<String, dynamic>>(); return parsed.map<User>((json) => User.fromJson(json)).toList(); }

步骤 3: 使用解析函数

最后,使用上述函数将JSON字符串反序列化为用户对象列表。这通常发生在网络请求的回调中。

dart
import 'dart:convert'; import 'package:http/http.dart' as http; Future<List<User>> fetchUsers() async { final response = await http.get('https://api.example.com/users'); if (response.statusCode == 200) { return parseUsers(response.body); } else { throw Exception('Failed to load users'); } }

示例说明

在这个例子中,我们首先创建了一个User类,它具有从JSON构造实例的能力。然后,我们定义了一个parseUsers函数,该函数接受API响应体,使用json.decode解析JSON数据,并将其映射到User.fromJson工厂构造函数,最终生成一个User对象列表。

通过这种方式,我们可以方便地处理来自网络的JSON格式数据,并将其有效地转换为Flutter应用中的数据模型。这对于开发具有网络交互的现代移动应用非常关键。

2024年8月8日 00:40 回复

你的答案