(一)添加依赖
dependencies:
json_annotation: ^2.4.0
dev_dependencies:
build_runner: ^1.5.2
json_serializable: ^3.0.0
(二)创建类
import 'package:json_annotation/json_annotation.dart';
part 'cacheItem.g.dart'; // 这个是重点,必须手打上去
@JsonSerializable() // 注释必须要加
class CacheItem{
String name;
String path;
String size;
bool isSelect;
CacheItem(this.name, this.path, this.size, this.isSelect);
}
(三)在 Tearminal 窗口执行
flutter packages pub run build_runner build
(四)执行万第三步,会生成'cacheItem.g.dart 文件 如下:
// GENERATED CODE - DO NOT MODIFY BY HAND
part of 'cacheItem.dart';
// **************************************************************************
// JsonSerializableGenerator
// **************************************************************************
CacheItem _$CacheItemFromJson(Map<String, dynamic> json) {
return CacheItem(json['name'] as String, json['path'] as String,
json['size'] as String, json['isSelect'] as bool);
}
Map<String, dynamic> _$CacheItemToJson(CacheItem instance) => <String, dynamic>{
'name': instance.name,
'path': instance.path,
'size': instance.size,
'isSelect': instance.isSelect
};
目录结构
(五) 添加 序列化,反序列化
import 'package:json_annotation/json_annotation.dart';
part 'cacheItem.g.dart';
@JsonSerializable()
class CacheItem{
String name;
String path;
String size;
bool isSelect;
CacheItem(this.name, this.path, this.size, this.isSelect);
// 序列化,自己写的(是不是有自动生成的?)
factory CacheItem.fromJson(Map<String ,dynamic> json)=>_$CacheItemFromJson(json);
// 反序列化,自己写的
Map<String,dynamic> toJson() => _$CacheItemToJson(this);
}
网友评论