当前位置: 首页 > news >正文

Android使用Kotlin利用Gson解析多层嵌套Json数据

文章目录

  • 1、依赖
  • 2、解析

1、依赖

build.gradle(app)中加入

dependencies {
implementation 'com.google.code.gson:gson:2.8.9'
}

2、解析

  1. 假设这是要解析Json数据
var responseStr =
"{"code": 200,"message": "操作成功","data": {"pageNum": 1,"pageSize": 5,"totalPage": 2,"total": 8,"list": [{"id": 1,"username": "test","password": "123","icon": "https://macro-oss.oss-cn-shenzhen.aliyuncs.com/mall/icon/github_icon_02.png","email": "test@qq.com","nickName": "测试账号","note": null,"createTime": "2018-09-29T05:55:30.000+00:00","loginTime": "2018-09-29T05:55:39.000+00:00","status": 1}, {"id": 3,"username": "admin","password": "123","icon": "https://macro-oss.oss-cn-shenzhen.aliyuncs.com/mall/icon/github_icon_01.png","email": "admin@163.com","nickName": "系统管理员","note": "系统管理员","createTime": "2018-10-08T05:32:47.000+00:00","loginTime": "2019-04-20T04:45:16.000+00:00","status": 1}, {"id": 4,"username": "macro","password": "123","icon": "https://macro-oss.oss-cn-shenzhen.aliyuncs.com/mall/icon/github_icon_01.png","email": "macro@qq.com","nickName": "macro","note": "macro专用","createTime": "2019-10-06T07:53:51.000+00:00","loginTime": "2020-02-03T06:55:55.000+00:00","status": 1}, {"id": 6,"username": "productAdmin","password": "123","icon": "https://macro-oss.oss-cn-shenzhen.aliyuncs.com/mall/icon/github_icon_03.png","email": "product@qq.com","nickName": "商品管理员","note": "只有商品权限","createTime": "2020-02-07T08:15:08.000+00:00","loginTime": null,"status": 1}, {"id": 7,"username": "orderAdmin","password": "123","icon": "https://macro-oss.oss-cn-shenzhen.aliyuncs.com/mall/icon/github_icon_04.png","email": "order@qq.com","nickName": "订单管理员","note": "只有订单管理权限","createTime": "2020-02-07T08:15:50.000+00:00","loginTime": null,"status": 1}]}
}     
  1. 分析Json的结构
  • Json主要构成部分
    在这里插入图片描述
    对应的类
data class Result(val code: Int,val message: String,val data: Data
) : Serializable
  • data部分的组成
    在这里插入图片描述
    对应的类:
data class Data(val pageNum: Int,val pageSize: Int,val totalPage: Int,val total: Int,val list: List<list> = ArrayList(),
) : Serializable

Json中list使用[ ],所以这里的list写成: val list: List<list> = ArrayList()

  • list部分的组成
    在这里插入图片描述
    对应的类:
data class list(val id: Int,val username: String,val password: String,val icon: String,val email: String,val nickName: String,val createTime: String,val loginTime: String,val status: Int
) : Serializable

重点提醒:类里面的属性名必须跟Json字段里面的Key是一模一样的,否则会导致解析不成功在这里插入图片描述
如果不一致:
在这里插入图片描述
这个部分我刚开始处理也错了,找了好久才发现,一定要注意

  1. 开始解析
		val gson = Gson()val resultType = object :  TypeToken<Result>() {}.typeval fromJson = gson.fromJson<Result>(responseStr, resultType)
  1. 提取数据
    通过fromJson提取
    如:在这里插入图片描述
http://www.lryc.cn/news/241906.html

相关文章:

  • DOM事件的传播机制
  • gitlab利用CI多工程持续构建
  • 【C++初阶】四、类和对象(构造函数、析构函数、拷贝构造函数、赋值运算符重载函数)
  • js粒子效果(二)
  • 01.让自己习惯C++
  • ElementUI table+dialog实现一个简单的可编辑的表格
  • Rust语言精讲:数据类型全解析
  • 《数据结构、算法与应用C++语言描述》-代码实现散列表(线性探查与链式散列)
  • Hadoop学习笔记:运行wordcount对文件字符串进行统计案例
  • python编写简单登录系统(密码混淆加密)
  • UVA1025 城市里的间谍 A Spy in the Metro
  • 【科普知识】什么是步进电机?
  • AWS云服务器EC2实例实现ByConity快速部署
  • Docker的项目资源参考
  • wsl-ubuntu 系统端口总被主机端口占用问题解决
  • 详解自动化之单元测试工具Junit
  • 超声波雪深传感器冬季里的科技魔法
  • 2023年【熔化焊接与热切割】免费试题及熔化焊接与热切割模拟考试
  • 【数据结构】—搜索二叉树(C++实现,超详细!)
  • 机器人算法—ROS TF坐标变换
  • 路由VRRP配置例子
  • OpenGL 绘制点与三角形(Qt)
  • 究竟什么是阻塞与非阻塞、同步与异步
  • Openlayer【三】—— 绘制多边形GeoJson边界绘制
  • 用SOLIDWORKS画个高尔夫球,看似简单的建模却大有学问
  • Linux:Network: ARP被动删除的一个情况
  • 『接口测试干货』| Newman+Postman接口自动化测试完整过程
  • 根据商品链接获取拼多多商品详情数据接口|拼多多商品详情价格数据接口|拼多多API接口
  • KaiwuDB 监控组件及辅助 SQL 调优介绍
  • 双11再创新高!家电行业如何通过矩阵管理,赋能品牌增长?