切换导航
{{systemName}}
{{ info.Title }}
{{info.Title}}
{{ menu.Title }}
{{menu.Title}}
登录
|
退出
搜索
Flutter的数据转换及读取和解析
作者:ych
### JSON读取解析转换 pubspec.yaml中进行配置可以读。 test.json ``` { "status": "0000", "message": "success", "data": { "title": { "id": "001", "name": "白菜" }, "content": [{ "id": "001", "value": "你好白菜" }, { "id": "002", "value": "你好萝卜" } ] } } ``` #### JSON资源读取 如果我们希望读取JSON资源,可以使用`package:flutter/services.dart`包中的`rootBundle`。 在rootBundle中有一个loadString方法,可以去加载JSON资源 但是注意,查看该方法的源码,你会发现这个操作是一个异步的。 代码如下: ``` import'package:flutter/services.dart' show rootBundle; // 打印读取的结果是一个字符串 rootBundle.loadString('json/test.json').then((value) => print(value)); ``` #### JSON字符串转化 拿到JSON字符串后,我们需要将其转成成我们熟悉的List和Map类型。 我们可以通过`dart:convert`包中的`json.decode`方法将其进行转化。 代码如下: ``` // 1.读取json文件 String jsonString = await rootBundle.loadString("json/test.json"); // 2.转成List或Map类型 final jsonResult = json.decode(jsonString); ``` #### Flutter中json转model 在Flutter中,有几种JSON转模型的方式 ##### 手动转化 JSON转模型,必然可以通过手动来进行转化: 优点:完全是自己可控的,并且需要哪些字段就转化哪些字段,对于不需要的,忽略即可;并且继承关系也会一目了然。 缺点:麻烦,而且容易出错。 对象Model定义 将JSON转成了List和Map类型后,就可以将List中的一个个Map转成Model对象,所以我们需要定义自己的Model 创建 contentModel.dart文件,代码如下: ``` class ContentModel{ String status; String message; Data data; ContentModel.fromMap(Map
json){ this.status = json["status"]; this.message = json["message"]; var data = json["data"]; this.data = Data.fromMap(data["title"],data['content']); } } class Data{ Datatitle title; List
content; Data.fromMap(Map
title,List
content){ this.title = Datatitle.fromMap(title); var contents = content; this.content = content.map((item) { return contentItem.fromMap(item); }).toList(); } } class Datatitle{ String id; String name; Datatitle.fromMap(Map
title){ this.id = title['id']; this.name = title['name']; } } class contentItem{ String id; String value; contentItem.fromMap(Map
title){ this.id = title['id']; this.value = title['value']; } } ``` 外部使用: ``` import 'model/contentModel.dart'; var fu = rootBundle.loadString('json/test.json'); fu.then((value){ final jsonResult = json.decode(value); print(jsonResult.runtimeType); Map map = new Map
.from(jsonResult); var model = ContentModel.fromMap(map); print(model.data.content[0].value);//打印content第一条数据的value值 }); ```
相关推荐
Flutter ListView嵌套Listview问题和Column嵌套ListView问题
Flutter打包release APK闪退百分百解决方法
flutter fluttertoast弹窗工具的使用和封装
flutter网络请求框架dio基本使用
js加密处理实战
Flutter 获取文件缓存及清理缓存工具类库
Flutter基础组件
Flutter单一子元素组件
Flutter shared_preferences数据存储工具类库
评论区
先去登录
版权所有:机遇屋在线 Copyright © 2021-2025 jiyuwu Co., Ltd.
鲁ICP备16042261号-1