Flutter JSON类自动生成插件json_class_generator_annotations的使用

Flutter JSON类自动生成插件json_class_generator_annotations的使用

特性

此包用于与json_generator一起使用。

使用步骤

1. 添加依赖

首先,在项目的pubspec.yaml文件中添加json_annotationbuild_runner依赖:

dependencies:
  json_annotation: ^4.0.0

dev_dependencies:
  build_runner: ^2.0.0

运行以下命令以安装依赖:

flutter pub get

2. 创建数据模型并添加注解

在你的Dart文件中创建一个JSON字符串,并使用@JsonClass注解标记它。例如:

import 'package:json_annotation/json_annotation.dart';

// 使用 @JsonClass 注解标记这个类
@JsonClass()
class User {
  final String name;
  final int age;

  // 构造函数
  User({required this.name, required this.age});
}

void main() {
  // 示例JSON字符串
  String jsonString = '{"name": "John", "age": 30}';
  
  // 将JSON字符串解析为User对象
  User user = User.fromJson(json.decode(jsonString));
  
  print('Name: ${user.name}, Age: ${user.age}');
}

3. 生成代码

运行以下命令以生成所需的代码:

dart run build_runner build

生成的代码将包含从JSON解析和序列化的逻辑。例如,生成的代码可能类似于以下内容:

// 自动生成的代码
User _$UserFromJson(Map<String, dynamic> json) {
  return User(
    name: json['name'] as String,
    age: json['age'] as int,
  );
}

Map<String, dynamic> _$UserToJson(User instance) => <String, dynamic>{
      'name': instance.name,
      'age': instance.age,
    };

4. 测试生成的代码

你可以通过以下方式测试生成的代码是否正常工作:

void main() {
  String jsonString = '{"name": "Alice", "age": 25}';
  
  // 使用生成的方法解析JSON
  User user = _$UserFromJson(json.decode(jsonString));
  
  print('Name: ${user.name}, Age: ${user.age}');
}

运行结果应为:

Name: Alice, Age: 25

更多关于Flutter JSON类自动生成插件json_class_generator_annotations的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter JSON类自动生成插件json_class_generator_annotations的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


json_class_generator_annotations 是一个用于 Flutter 的注解库,它可以帮助开发者自动生成 JSON 序列化和反序列化的代码。通过使用这个库,你可以减少手动编写样板代码的工作量,提高开发效率。

安装

首先,你需要在 pubspec.yaml 文件中添加 json_class_generator_annotationsjson_serializable 依赖:

dependencies:
  flutter:
    sdk: flutter
  json_annotation: ^4.8.0

dev_dependencies:
  build_runner: ^2.3.3
  json_serializable: ^6.7.1
  json_class_generator_annotations: ^1.0.0

然后运行 flutter pub get 来安装依赖。

使用步骤

  1. 创建数据模型类

    创建一个数据模型类,并使用 [@JsonClass](/user/JsonClass) 注解标记它。你还可以使用 @JsonField 注解来指定字段的 JSON 名称。

    import 'package:json_annotation/json_annotation.dart';
    import 'package:json_class_generator_annotations/json_class_generator_annotations.dart';
    
    part 'user.g.dart';
    
    [@JsonClass](/user/JsonClass)()
    class User {
      @JsonField(name: 'user_name')
      final String userName;
    
      final int age;
    
      User({required this.userName, required this.age});
    
      factory User.fromJson(Map<String, dynamic> json) => _$UserFromJson(json);
    
      Map<String, dynamic> toJson() => _$UserToJson(this);
    }
    
  2. 生成代码

    运行以下命令来生成 JSON 序列化和反序列化的代码:

    flutter pub run build_runner build
    

    这将会生成一个 user.g.dart 文件,其中包含 _$UserFromJson_$UserToJson 方法的实现。

  3. 使用生成的代码

    现在你可以使用生成的 fromJsontoJson 方法来序列化和反序列化 User 对象。

    void main() {
      final user = User(userName: 'JohnDoe', age: 30);
    
      // 序列化
      final userJson = user.toJson();
      print(userJson); // {user_name: JohnDoe, age: 30}
    
      // 反序列化
      final newUser = User.fromJson(userJson);
      print(newUser.userName); // JohnDoe
      print(newUser.age); // 30
    }
回到顶部