Flutter Json自动反序列化——json_serializable v1
以下是使用json_serializable
包进行Flutter中JSON自动反序列化的示例代码。
首先,确保在你的pubspec.yaml
文件中添加了json_annotation
和json_serializable
依赖,并运行flutter pub get
来安装它们。
dependencies:
flutter:
sdk: flutter
json_annotation: ^4.0.0
json_serializable: ^6.0.0
然后,创建一个模型类,并使用json_serializable
生成器来自动生成JSON序列化和反序列化方法。
// 引入json_annotation包提供的注解
import 'package:json_annotation/json_annotation.dart';
// 使用json_serializable包提供的注解
part 'user.g.dart';
// 标记User类为支持JSON序列化
@jsonSerializable
class User {
String name;
int age;
User(this.name, this.age);
// 反序列化工厂构造函数
factory User.fromJson(Map<String, dynamic> json) => _$UserFromJson(json);
// 序列化方法
Map<String, dynamic> toJson() => _$UserToJson(this);
}
在命令行运行以下命令,生成序列化方法的辅助代码:
flutter pub run build_runner build
现在,你可以使用User.fromJson()
来将JSON字符串反序列化为User对象,使用toJson()
来将User对象序列化为JSON字符串。
void main() {
// JSON字符串
String jsonString = '{"name":"John", "age":30}';
// 反序列化JSON字符串到User对象
User user = User.fromJson(jsonDecode(jsonString));
print('Name: ${user.name}, Age: ${user.age}');
// 序列化User对象到JSON字符串
String userJson = jsonEncode(user);
print('User JSON: $userJson');
}
以上代码演示了如何使用json_serializable
包来简化JSON的反序列化和序列化过程。通过这种方式,你可以避免手写大量的JSON解析代码,使你的代码更加简洁和可维护。
评论已关闭