Flutter JSON转换注解插件json_conversion_annotation的使用

Flutter JSON转换注解插件json_conversion_annotation的使用

在Flutter开发中,处理JSON数据是非常常见的任务。json_conversion_annotation插件可以帮助我们更方便地将JSON字符串转换为对象或从对象转换为JSON字符串。本文将通过一个完整的示例来展示如何使用该插件。

步骤1:添加依赖

首先,在你的pubspec.yaml文件中添加json_conversionjson_annotation依赖:

dependencies:
  flutter:
    sdk: flutter

dev_dependencies:
  build_runner:
  json_serializable:
  json_conversion:

步骤2:创建模型类

接下来,创建一个简单的模型类,并使用@JsonSerializable注解标记它。例如,我们创建一个User类:

import 'package:json_conversion/json_conversion.dart';

@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:生成代码

在命令行中运行以下命令以生成必要的代码:

flutter pub run build_runner build

这将会生成_$UserFromJson_$UserToJson方法,用于实现JSON到对象和对象到JSON的转换。

步骤4:使用模型类

现在,你可以在你的应用中使用User类了。例如:

void main() async {
  // 假设这是从网络获取的JSON数据
  String jsonString = '{"name": "John Doe", "age": 30}';
  
  // 将JSON字符串解析为User对象
  User user = User.fromJson(json.decode(jsonString));
  print('Name: ${user.name}, Age: ${user.age}');
  
  // 将User对象转换回JSON字符串
  Map<String, dynamic> jsonMap = user.toJson();
  String newUserJson = json.encode(jsonMap);
  print(newUserJson);
}

更多关于Flutter JSON转换注解插件json_conversion_annotation的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter JSON转换注解插件json_conversion_annotation的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


json_conversion_annotation 是一个用于 Flutter 的注解库,它可以帮助开发者自动生成 JSON 序列化和反序列化的代码。使用这个库可以减少手动编写 JSON 转换代码的工作量,尤其是在处理复杂的数据结构时。

安装依赖

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

dependencies:
  flutter:
    sdk: flutter
  json_conversion_annotation: ^0.0.1

dev_dependencies:
  build_runner: ^2.1.0
  json_serializable: ^6.0.0

创建模型类

接下来,你可以创建一个模型类,并使用 @JsonConversion 注解来标记它。这个注解将告诉 json_conversion_annotation 生成相应的 JSON 转换代码。

import 'package:json_conversion_annotation/json_conversion_annotation.dart';

part 'user_model.g.dart'; // 生成的代码文件

@JsonConversion()
class UserModel {
  final String name;
  final int age;
  final String email;

  UserModel({
    required this.name,
    required this.age,
    required this.email,
  });

  factory UserModel.fromJson(Map<String, dynamic> json) => _$UserModelFromJson(json);

  Map<String, dynamic> toJson() => _$UserModelToJson(this);
}

生成代码

在终端中运行以下命令来生成 JSON 转换代码:

flutter pub run build_runner build

这将会生成 user_model.g.dart 文件,其中包含 _$UserModelFromJson_$UserModelToJson 方法。

使用生成的代码

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

void main() {
  final json = {
    'name': 'John Doe',
    'age': 30,
    'email': 'john.doe@example.com',
  };

  // 反序列化
  final user = UserModel.fromJson(json);
  print(user.name); // 输出: John Doe

  // 序列化
  final userJson = user.toJson();
  print(userJson); // 输出: {name: John Doe, age: 30, email: john.doe@example.com}
}
回到顶部