Flutter中如何使用json_annotation库
在Flutter项目中,我想使用json_annotation库来实现JSON序列化和反序列化,但不太清楚具体步骤。请问如何正确安装和配置这个库?需要哪些注解来标记模型类?生成JSON转换代码的命令是什么?如果遇到"Could not generate fromJson"之类的错误该如何解决?
2 回复
- 添加依赖:
json_annotation、json_serializable、build_runner。 - 使用
@JsonSerializable注解类。 - 运行
flutter pub run build_runner build生成代码。 - 在类中添加
fromJson和toJson方法。
更多关于Flutter中如何使用json_annotation库的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
在Flutter中使用 json_annotation 库来自动生成JSON序列化代码,可以简化模型类的编写。以下是详细步骤:
1. 添加依赖
在 pubspec.yaml 文件中添加依赖:
dependencies:
flutter:
sdk: flutter
json_annotation: ^4.8.1 # 检查最新版本
dev_dependencies:
build_runner: ^2.4.4
json_serializable: ^6.7.1
运行 flutter pub get 安装依赖。
2. 创建模型类
使用注解标记需要序列化的字段:
import 'package:json_annotation/json_annotation.dart';
part 'user.g.dart'; // 生成的文件
@JsonSerializable()
class User {
final String name;
final int age;
final String email;
User({required this.name, required this.age, required this.email});
// 从JSON生成User实例
factory User.fromJson(Map<String, dynamic> json) => _$UserFromJson(json);
// 将User实例转换为JSON
Map<String, dynamic> toJson() => _$UserToJson(this);
}
3. 生成代码
运行以下命令生成序列化代码:
flutter pub run build_runner build
如需自动监听文件变化,使用:
flutter pub run build_runner watch
4. 使用示例
// 从JSON字符串解析
Map<String, dynamic> userMap = jsonDecode('{"name": "Alice", "age": 25, "email": "alice@example.com"}');
User user = User.fromJson(userMap);
// 转换为JSON字符串
String jsonString = jsonEncode(user.toJson());
注意事项
- 字段名称需与JSON键名一致,否则使用
@JsonKey(name: 'json_name')指定映射。 - 嵌套对象需在对应类上添加
@JsonSerializable()。 - 每次修改模型类后需重新运行生成命令。
通过以上步骤,即可高效处理JSON数据序列化。

