博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
flutter-解析json
阅读量:4055 次
发布时间:2019-05-25

本文共 2102 字,大约阅读时间需要 7 分钟。

在android中可以使用Gson直接对网络请求返回的json进行格式化,首先这种方法是flutter中是不可行的。

在flutter中对于网络请求返回的json,需要自己写方法来解析。可以自己手动来解析,但是当json层级很大的时候,就非常麻烦。

上面的json_serialzable可以实现json和model之间的相互转化。

第一步:导包,两个包

        1.上面的json_serializable

        2.build_runner  ,导入这个时候可能会提示你的dart sdk版本低的问题,自行去GitHub找合适的版本

第二步:创建model

      自行根据你的json,创建合适的model,建好如下(此时会报错,不用管)

import 'package:json_annotation/json_annotation.dart';import 'QiangGouItemBean.dart';part 'GetRushListBean.g.dart';///这个标注是告诉生成器,这个类是需要生成Model类的@JsonSerializable()class GetRushListBean {  int status;  String msg;  ResultBean result;  GetRushListBean();}@JsonSerializable()class ResultBean {  Map
> rush_list; String page; int p; int pageNum; ResultBean(); }

第三步:自动生成解析方法

输入下面的命令

flutter packages pub run build_runner build

然后你就会看到你的model同目录下生成了.g.文件

第四部:把解析方法复制到你的文件中,让外部可以调用,最后如下

import 'package:json_annotation/json_annotation.dart';import 'QiangGouItemBean.dart';part 'GetRushListBean.g.dart';//flutter packages pub run build_runner build  生成方法///这个标注是告诉生成器,这个类是需要生成Model类的@JsonSerializable()class GetRushListBean {  int status;  String msg;  ResultBean result;  GetRushListBean();  factory GetRushListBean.fromJson(Map
json) => _$GetRushListBeanFromJson(json); Map
toJson() => _$GetRushListBeanToJson(this);}@JsonSerializable()class ResultBean { Map
> rush_list; String page; int p; int pageNum; ResultBean(); factory ResultBean.fromJson(Map
json) => _$ResultBeanFromJson(json); Map
toJson() => _$ResultBeanToJson(this);}

第四部:实际使用

HttpClient httpClient = new HttpClient();    Uri uri = new Uri.http(        "", '/xx', {'xx': ''});    var request = await httpClient.getUrl(uri);    request.headers.add("Content-Type", "application/json");    var response = await request.close();    var responseBody = await response.transform(utf8.decoder).join();    Map resultMap = json.decode(responseBody);    GetRushListBean getRushListBean = GetRushListBean.fromJson(resultMap);    print('获取到的json数据' + json.encode(resultMap));    print('解析到的json数据' + json.encode(getRushListBean));

 

转载地址:http://nxeci.baihongyu.com/

你可能感兴趣的文章
学习设计模式(3)——单例模式和类的成员函数中的静态变量的作用域
查看>>
自然计算时间复杂度杂谈
查看>>
当前主要目标和工作
查看>>
使用 Springboot 对 Kettle 进行调度开发
查看>>
一文看清HBase的使用场景
查看>>
解析zookeeper的工作流程
查看>>
搞定Java面试中的数据结构问题
查看>>
慢慢欣赏linux make uImage流程
查看>>
linux内核学习(7)脱胎换骨解压缩的内核
查看>>
以太网基础知识
查看>>
慢慢欣赏linux 内核模块引用
查看>>
kprobe学习
查看>>
慢慢欣赏linux phy驱动初始化2
查看>>
慢慢欣赏linux CPU占用率学习
查看>>
2020年终总结
查看>>
Homebrew指令集
查看>>
React Native(一):搭建开发环境、出Hello World
查看>>
React Native(二):属性、状态
查看>>
JSX使用总结
查看>>
React Native(四):布局(使用Flexbox)
查看>>