vs code作为编辑器
1. 首先,json对象与字符串的转换是使用json.encode和json.decode的,需要导入import 'dart:convert';
这里主要的自然不是这个,而是json对象和实体对象的转换
当然,实际上json对象算是一个Map对象,直接通过键访问就可以得到值,即通过实体对象的属性名就可以得到值。
这里只是把这一步通过命令生成而已
2. 导入对应的flutter包
即在pubspec.yaml中添加
dependencies:
json_annotation: ^3.0.0
dev_dependencies:
build_runner: ^1.0.0
json_serializable: ^3.2.0
保存将自动加载,或者终端输入flutter packages get,亦或者vs code中点击“查看-命令面板”再输入Flutterget就会出现
3. 创建实体的dart文件,下面以news为例
import '
package:json_annotation/json_annotation.dart';
//注意必须导入,不然无法使用@JsonSerializable()
part "
news.g.dart";
//注意全小写,否则无法成功。另外也是必须的,因为要生成一个转换部分文件
@JsonSerializable()//注意加上,后面命令识别用
class News extends Object {
final String author;
final String title;
final String description;
final String url;
final String urlToImage;
final String publishedAt;
final Source source;
News(this.author,
this.title,
this.description,
this.url,
this.urlToImage,
this.publishedAt,
this.source);
}
4. 终端输入命令
flutter packages pub run build_runner build
等到成功,每个dart文件都将会有一个输出
这样就生成好了一个转换类news.g.dart,此时转换文件中有_$NewsFromJson方法
你会发现竟然是报错的??那是因为你主类中缺少了命名式构造函数,加上即可
factory News.fromJson(Map<String, dynamic> json) => _$NewsFromJson(json);
5. 这样,你就可以通过命名构造函数从json对象转换为实体对象了