json数据文件或者自己http获取到的json
*jsondate.dart
var jsontext = """{
"data": [
{
"children": [
{
"courseId": 13,
"id": 538,
"name": "",
"order": 255001,
"parentChapterId": 535,
"userControlSetTop": false,
"visible": 1
}
],
"courseId": 13,
"id": 535,
"name": "",
"order": 255,
"parentChapterId": 0,
"userControlSetTop": false,
"visible": 1
}
],
"errorCode": 0,
"errorMsg": "No"
}""";
第一种:使用FlutterJsonHelper插件(推荐:最简单)【android studio下使用】
创建json.dart文件,将上述的json或者http获取到的字符串复制进来,然后在创建json.dart文件右键选择Generate->JsonToDartClass,然后在弹窗中将json字符串粘贴进去,点击ok即可。生成的实体类如下图:
重点来了,代码
import 'dart:convert';
import 'jsondate.dart'; //这个地方如果你是用http获取的json数据,那就不用
import 'json.dart'; //这个就是上述json数据转化为实体的文件
Map<String, dynamic> jsontext1 = jsonDecode(jsontext); //字符串转json格式,一般http获取到的基本不用,如果不行的话,就用上这行;注意jsontext是函数,不是文件名
var coin = Json.fromJson(jsontext1); //记得Json.from... 这里面的J是大写,因为是要对应import 'json.dart'中class类的自定义名称
print(coin.data[0].order);
print(coin.errorMsg);
第二种:使用Json To Dart插件(推荐:最简单)【Visual Studio Code下使用】
离线插件vsix下载,安装方法自行研究
创建json.dart文件,将上述的json或者http获取到的字符串复制进来,然后再新建json3.dart,把前面json数据复制过来,在该文件的编辑页面右键选择Convert JSON from Clipboard Here,
然后自动生成实体类。
重点来了,代码
import 'dart:convert';
import 'jsondate.dart'; //这个地方如果你是用http获取的json数据,那就不用
import 'json3.dart'; //这个就是上述json数据转化为实体的文件
Map<String, dynamic> jsontext1 = jsonDecode(jsontext); //字符串转json格式,一般http获取到的基本不用,如果不行的话,就用上这行;注意jsontext是函数,不是文件名
var coin = Json3.fromJson(jsontext1); //记得Json3.from... 这里面的J是大写,因为是要对应import 'json.dart'中class类的自定义名称
print(coin.data[0].order);
print(coin.data[0].children[0].userControlSetTop);
print(coin.errorMsg);
第三种:使用FlutterJsonBeanFactory插件【android studio下使用】
复制json字符串,建立model
重点来了,代码
import 'dart:convert';
import 'generated/json/base/json_convert_content.dart'; //刚刚插件自动生成的文件,必须添加,如果没添加爆红了点fix也会添加
import 'jsondate.dart'; //这个地方如果你是用http获取的json数据,那就不用
import 'jsonone_jsonformat.dart'; //刚刚插件自动生成的文件,必须添加
Map<String, dynamic> jsontext1 = jsonDecode(jsontext); //字符串转json格式,一般http获取到的基本不用,如果不行的话,就用上这行;注意jsontext是函数,不是文件名
JsononeJsonformat model = JsonConvert.fromJsonAsT(jsontext1); //其中JsononeJsonformat是import 'jsonone_jsonformat.dart'中class类的自定义名称(如果复杂的json,里面多重嵌套,数组不同,就要注意自定义的class名称了);JsonConvert.from.. 就是上述import中json_convert_content.dart文件
print(model.errorMsg);
print(model.errorCode);
print(model.data[0].order.toString());
高能总结:如果复杂的json,里面多重嵌套,数组不同,就要注意二个自定义的class名称了!!!重要的事情说三遍