flutter json插件如何使用
在Flutter中如何使用json插件来解析和生成JSON数据?我刚接触Flutter开发,遇到需要处理API返回的JSON数据的情况,但不太清楚具体该怎么做。能否介绍一下常用的json插件(比如dart:convert或json_serializable)的基本用法?最好能提供一些简单的代码示例说明如何将JSON字符串转换为Dart对象,以及如何将Dart对象序列化成JSON字符串。
2 回复
使用json_serializable插件:
- 添加依赖:
json_annotation、json_serializable、build_runner。 - 创建模型类,添加
@JsonSerializable()注解。 - 运行命令生成代码:
flutter packages pub run build_runner build。 - 使用
fromJson和toJson方法序列化/反序列化。
更多关于flutter json插件如何使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
在Flutter中,处理JSON数据主要使用 dart:convert 库的内置功能,无需额外插件。以下是两种常用方法:
1. 手动序列化(推荐用于简单数据结构)
使用 json.decode() 和 json.encode():
import 'dart:convert';
// JSON字符串转Map
String jsonString = '{"name": "张三", "age": 25}';
Map<String, dynamic> user = json.decode(jsonString);
print(user['name']); // 输出:张三
// Map转JSON字符串
Map<String, dynamic> userMap = {'name': '李四', 'age': 30};
String jsonStr = json.encode(userMap);
print(jsonStr); // 输出:{"name":"李四","age":30}
2. 自动序列化(推荐用于复杂数据)
使用 json_annotation + json_serializable:
- 添加依赖:
dependencies:
json_annotation: ^4.8.1
dev_dependencies:
build_runner: ^2.4.4
json_serializable: ^6.7.1
- 创建模型类:
import 'package:json_annotation/json_annotation.dart';
part 'user.g.dart';
@JsonSerializable()
class User {
final String name;
final int age;
User({required this.name, required this.age});
factory User.fromJson(Map<String, dynamic> json) => _$UserFromJson(json);
Map<String, dynamic> toJson() => _$UserToJson(this);
}
- 生成代码:
flutter pub run build_runner build
- 使用:
// JSON转对象
Map<String, dynamic> userMap = json.decode('{"name": "王五", "age": 28}');
User user = User.fromJson(userMap);
// 对象转JSON
String jsonStr = json.encode(user.toJson());
处理网络请求中的JSON:
// 使用http包示例
import 'package:http/http.dart' as http;
Future<User> fetchUser() async {
final response = await http.get(Uri.parse('https://api.example.com/user'));
if (response.statusCode == 200) {
return User.fromJson(json.decode(response.body));
} else {
throw Exception('加载失败');
}
}
建议:
- 简单数据:使用手动序列化
- 复杂数据:使用自动序列化(类型安全、减少错误)
- 确保处理异常(如使用 try-catch 包裹 json.decode)

