Flutter中的代码生成:使用json_serializable
Flutter中的代码生成:使用json_serializable
使用json_serializable插件,通过注解自动生成JSON序列化代码。
更多关于Flutter中的代码生成:使用json_serializable的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
在Flutter中,使用json_serializable包可以通过代码生成自动序列化和反序列化JSON数据。只需在模型类上添加注解并运行build_runner即可。
在Flutter中,json_serializable是一个用于自动生成JSON序列化和反序列化代码的库。使用它可以减少手动编写样板代码的工作量。以下是基本步骤:
- 
添加依赖:在 pubspec.yaml中添加json_serializable和build_runner依赖。dependencies: json_annotation: ^4.8.1 dev_dependencies: build_runner: ^2.3.3 json_serializable: ^6.6.1
- 
创建模型类:使用 [@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); }
- 
生成代码:运行 build_runner生成序列化代码。flutter pub run build_runner build
这将生成user.g.dart文件,包含fromJson和toJson方法的实现。
使用json_serializable插件,通过注解自动生成JSON序列化代码。
在Flutter中,json_serializable 是一个常用的代码生成库,用于自动生成将Dart对象与JSON之间相互转换的代码。它可以帮助开发者减少手写样板代码的工作量,提高开发效率。
使用步骤
- 
添加依赖 
 首先,在pubspec.yaml文件中添加json_serializable和json_annotation依赖:dependencies: flutter: sdk: flutter json_annotation: ^4.8.1 dev_dependencies: build_runner: ^2.4.6 json_serializable: ^6.7.1
- 
创建模型类 
 创建一个 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是自动生成的函数。
- 
生成代码 
 在终端运行以下命令来生成代码:flutter pub run build_runner build这将生成 user.g.dart文件,其中包含fromJson和toJson方法的实现。
- 
使用生成的代码 
 现在你可以使用生成的代码来将 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 数据,减少手写代码的错误和工作量。
 
        
       
             
             
            

