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

Dart 如何处理 JSON 数据?

2月7日 11:28

在Dart中处理JSON数据主要涉及两个步骤:解析(parsing)和编码(encoding)。Dart提供了内置的json库来处理这些操作。以下是具体步骤和示例:

1. 导入dart:convert

首先,需要导入Dart的dart:convert库,这个库包含了处理JSON所需的工具:

dart
import 'dart:convert';

2. JSON解析(解码)

将JSON字符串转换为Dart的Map或List。这通常在获取API响应数据时使用:

dart
String jsonString = '{"name": "John", "age": 30}'; Map<String, dynamic> user = jsonDecode(jsonString); print(user['name']); // 输出 John print(user['age']); // 输出 30

如果JSON是一个数组:

dart
String jsonArray = '[{"name": "John"}, {"name": "Jane"}]'; List<dynamic> users = jsonDecode(jsonArray); print(users[0]['name']); // 输出 John print(users[1]['name']); // 输出 Jane

3. JSON编码(序列化)

将Dart的Map或List转换为JSON字符串。这通常用于发送数据到服务器:

dart
Map<String, dynamic> data = {'name': 'John', 'age': 30}; String json = jsonEncode(data); print(json); // 输出 {"name":"John","age":30}

4. 处理复杂的JSON结构

对于更复杂的JSON结构,你可能需要创建模型(model)类来表示数据,然后使用json_serializable或类似的库来简化序列化和反序列化的过程。

例如,创建一个User类,并使用json_serializable来自动生成相关的JSON处理代码:

dart
import 'package:json_annotation/json_annotation.dart'; part 'user.g.dart'; () class User { String name; int age; User({required this.name, required this.age}); factory User.fromJson(Map<String, dynamic> json) => _$UserFromJson(json); Map<String, dynamic> toJson() => _$UserToJson(this); }

然后,在你的build_runner中运行构建命令来生成自动代码。

这些步骤概述了在Dart中处理JSON数据的基本方法。使用内置的函数和库可以非常高效地处理Web开发中常见的数据交换格式。

标签:Dart