Flutter中如何使用json_annotation库

在Flutter项目中,我想使用json_annotation库来实现JSON序列化和反序列化,但不太清楚具体步骤。请问如何正确安装和配置这个库?需要哪些注解来标记模型类?生成JSON转换代码的命令是什么?如果遇到"Could not generate fromJson"之类的错误该如何解决?

2 回复
  1. 添加依赖:json_annotationjson_serializablebuild_runner
  2. 使用@JsonSerializable注解类。
  3. 运行flutter pub run build_runner build生成代码。
  4. 在类中添加fromJsontoJson方法。

更多关于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数据序列化。

回到顶部