Dart 如何处理 JSON 数据?
在Dart中处理JSON数据主要涉及两个步骤:解析(parsing)和编码(encoding)。Dart提供了内置的json库来处理这些操作。以下是具体步骤和示例:1. 导入dart:convert库首先,需要导入Dart的dart:convert库,这个库包含了处理JSON所需的工具:import 'dart:convert';2. JSON解析(解码)将JSON字符串转换为Dart的Map或List。这通常在获取API响应数据时使用:String jsonString = '{"name": "John", "age": 30}';Map<String, dynamic> user = jsonDecode(jsonString);print(user['name']); // 输出 Johnprint(user['age']); // 输出 30如果JSON是一个数组:String jsonArray = '[{"name": "John"}, {"name": "Jane"}]';List<dynamic> users = jsonDecode(jsonArray);print(users[0]['name']); // 输出 Johnprint(users[1]['name']); // 输出 Jane3. JSON编码(序列化)将Dart的Map或List转换为JSON字符串。这通常用于发送数据到服务器: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处理代码:import 'package:json_annotation/json_annotation.dart';part 'user.g.dart';@JsonSerializable()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开发中常见的数据交换格式。