一、前言
Flutter 目前正在高速发展,而要学习 Flutter,那么解析 JSON 肯定是必不可少的。Flutter 中的 JSON 解析主要有下面两种方式。
二、手动解析
用于比较简单的 json 还是挺方便的,写法也比较简单,看下面的例子就明白了:
class User{
final String name;
final String email;
final bool loginFlag;
User({this.name, this.email,this.loginFlag});
factory User.fromJson(Map<String, dynamic> json) {
return new User(
loginFlag: json['loginFlag'],
name = json['name'],
email = json['email'],
);
}
}
使用方法:
import 'dart:convert';
import 'user.dart';
void main() {
getData();
}
getData(){
String json = """ """;
Map data = json.decode(a);
User user = User.fromJson(data);
print(user);
}
三、利用json_serializable
第1步:
在 pubspec.yaml 中添加以下依赖,然后在您的项目根文件夹中运行 flutter packages get
(或者在编辑器中点击 “Packages Get”) 以在项目中下载并使用这些新的依赖项.
dependencies:
# Your other regular dependencies here
json_annotation: ^0.2.3
dev_dependencies:
# Your other dev_dependencies here
build_runner: ^0.9.0
json_serializable: ^1.2.1
如果提示依赖项的版本跟你的 dart sdk 版本不符合,可以去 Dart Package 中找最新的依赖版本
第2步:
写 Bean,手写太复杂了,推荐使用 json2dartbean。这里我们用 wanandroid 的 api 做示例
第3步:
点击“复制”将生成的代码复制到我们的 Bean 中,然后在命令行输入
flutter packages pub run build_runner watch
这样会自动监视你 lib 目录下,然后当你的文件发生改变时会自动重新 build 一次,自动生成对应的 .g.dart 文件
第4步
使用:
String jsonstr = """""";
Map<String, dynamic> map = json.decode(jsonstr);
var articles = new Article.fromJson(map);