Flutter JSON类自动生成插件json_class_generator_annotations的使用
Flutter JSON类自动生成插件json_class_generator_annotations的使用
特性
此包用于与json_generator
一起使用。
使用步骤
1. 添加依赖
首先,在项目的pubspec.yaml
文件中添加json_annotation
和build_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
更多关于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_annotations
和 json_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
来安装依赖。
使用步骤
-
创建数据模型类
创建一个数据模型类,并使用
[@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); }
-
生成代码
运行以下命令来生成 JSON 序列化和反序列化的代码:
flutter pub run build_runner build
这将会生成一个
user.g.dart
文件,其中包含_$UserFromJson
和_$UserToJson
方法的实现。 -
使用生成的代码
现在你可以使用生成的
fromJson
和toJson
方法来序列化和反序列化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 }