flutter json_serializable使用

本文介绍了如何在Flutter项目中使用json_serializable库进行JSON序列化和反序列化操作。首先,添加json_serializable依赖,然后根据接口返回的JSON创建实体类,并关联实体类文件。通过运行build_runner生成辅助解析文件。成功后,可以使用生成的_$HomeEntityFromJson和_$HomeEntityToJson方法方便地转换JSON数据为实体类对象及反之。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1,添加依赖

dependencies:
   json_annotation: ^2.4.0
dev_dependencies:
  build_runner: ^1.0.0
  json_serializable: ^3.0.0

2,根据接口返回json创建实体类

class HomeEntity {
	String authToken;
	bool showTask;
	int pendingCount;
	int waitCheckCount;
	int checkingCount;
	int checkfailCount;

	HomeEntity({this.authToken, this.pendingCount,this.checkfailCount,this.checkingCount,this.showTask,this.waitCheckCount});
}

3,关联实体类文件

part 'home_entity.g.dart';
@JsonSerializable(nullable: false)
class HomeEntity {
	String authToken;
	bool showTask;
	int pendingCount;
	int waitCheckCount;
	int checkingCount;
	int checkfailCount;

	HomeEntity({this.authToken, this.pendingCount,this.checkfailCount,this.checkingCount,this.showTask,this.waitCheckCount});
}

声明part 部分,当前项目目录下执行命令 flutter packages pub run build_runner build
Successed 后会发现dart文件目录下会生成”home_entity.g.dart“文件,这个”home_entity.g.dart“就是build_runner根据JsonSerializable生成的json解析文件,文件内容如下:

// GENERATED CODE - DO NOT MODIFY BY HAND

part of 'home_entity.dart';

// **************************************************************************
// JsonSerializableGenerator
// **************************************************************************

HomeEntity _$HomeEntityFromJson(Map<String, dynamic> json) {
  return HomeEntity(
      authToken: json['authToken'] as String,
      pendingCount: json['pendingCount'] as int,
      checkfailCount: json['checkfailCount'] as int,
      checkingCount: json['checkingCount'] as int,
      showTask: json['showTask'] as bool,
      waitCheckCount: json['waitCheckCount'] as int);
}

Map<String, dynamic> _$HomeEntityToJson(HomeEntity instance) =>
    <String, dynamic>{
      'authToken': instance.authToken,
      'showTask': instance.showTask,
      'pendingCount': instance.pendingCount,
      'waitCheckCount': instance.waitCheckCount,
      'checkingCount': instance.checkingCount,
      'checkfailCount': instance.checkfailCount
    };

  • _$HomeEntityFromJson:它接收了一个map:Map<String, dynamic>,并将这个Map里的值映射为我们所需要的实体类对象。我们就可以使用这个方法,将存有json数据的map转化为我们需要的实体类对象。
  • _$HomeEntityToJson:将调用此方法的对象直接根据字段映射成Map。

4,实体类中添加fromJson 和 toJson方法

import 'package:json_annotation/json_annotation.dart';

part 'home_entity.g.dart';
@JsonSerializable(nullable: false)
class HomeEntity {
	String authToken;
	bool showTask;
	int pendingCount;
	int waitCheckCount;
	int checkingCount;
	int checkfailCount;

	HomeEntity({this.authToken, this.pendingCount,this.checkfailCount,this.checkingCount,this.showTask,this.waitCheckCount});

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

	Map<String, dynamic> toJson() => _$HomeEntityToJson(this);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值