Flutter中的代码生成:使用json_serializable

Flutter中的代码生成:使用json_serializable

5 回复

使用json_serializable插件,通过注解自动生成JSON序列化代码。

更多关于Flutter中的代码生成:使用json_serializable的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在Flutter中,使用json_serializable包可以通过代码生成自动序列化和反序列化JSON数据。只需在模型类上添加注解并运行build_runner即可。

在Flutter中,json_serializable是一个用于自动生成JSON序列化和反序列化代码的库。使用它可以减少手动编写样板代码的工作量。以下是基本步骤:

  1. 添加依赖:在pubspec.yaml中添加json_serializablebuild_runner依赖。

    dependencies:
      json_annotation: ^4.8.1
    
    dev_dependencies:
      build_runner: ^2.3.3
      json_serializable: ^6.6.1
    
  2. 创建模型类:使用[@JsonSerializable](/user/JsonSerializable)注解标记模型类。

    import 'package:json_annotation/json_annotation.dart';
    
    part 'user.g.dart';
    
    [@JsonSerializable](/user/JsonSerializable)()
    class User {
      final String name;
      final int age;
    
      User(this.name, this.age);
    
      factory User.fromJson(Map<String, dynamic> json) => _$UserFromJson(json);
      Map<String, dynamic> toJson() => _$UserToJson(this);
    }
    
  3. 生成代码:运行build_runner生成序列化代码。

    flutter pub run build_runner build
    

这将生成user.g.dart文件,包含fromJsontoJson方法的实现。

使用json_serializable插件,通过注解自动生成JSON序列化代码。

在Flutter中,json_serializable 是一个常用的代码生成库,用于自动生成将Dart对象与JSON之间相互转换的代码。它可以帮助开发者减少手写样板代码的工作量,提高开发效率。

使用步骤

  1. 添加依赖
    首先,在 pubspec.yaml 文件中添加 json_serializablejson_annotation 依赖:

    dependencies:
      flutter:
        sdk: flutter
      json_annotation: ^4.8.1
    
    dev_dependencies:
      build_runner: ^2.4.6
      json_serializable: ^6.7.1
    
  2. 创建模型类
    创建一个 Dart 类,并使用 [@JsonSerializable](/user/JsonSerializable)() 注解标记。例如:

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

    注意:part 'user.g.dart'; 是生成的代码文件,_$UserFromJson_$UserToJson 是自动生成的函数。

  3. 生成代码
    在终端运行以下命令来生成代码:

    flutter pub run build_runner build
    

    这将生成 user.g.dart 文件,其中包含 fromJsontoJson 方法的实现。

  4. 使用生成的代码
    现在你可以使用生成的代码来将 JSON 转换为 Dart 对象,或者将 Dart 对象转换为 JSON:

    void main() {
      final jsonString = '{"name": "John", "age": 30, "email": "john@example.com"}';
      final jsonMap = jsonDecode(jsonString);
    
      final user = User.fromJson(jsonMap);
      print(user.name); // 输出: John
    
      final userJson = user.toJson();
      print(userJson); // 输出: {name: John, age: 30, email: john@example.com}
    }
    

注意事项

  • 每次更改模型类后,都需要重新运行 flutter pub run build_runner build 来更新生成的代码。
  • 如果不想手动运行命令,可以使用 flutter pub run build_runner watch 命令,它会监听文件变化并自动生成代码。

通过 json_serializable,你可以更高效地处理 JSON 数据,减少手写代码的错误和工作量。

回到顶部