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.mzph.cn/news/158681.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

超过1000w条数据,MySQL查询越来越慢?四种方案帮你解决!

当MySQL表中的数据量超过一定数量时&#xff0c;查询可能变得越来越慢。这是因为MySQL需要扫描更多的数据来查找匹配的行&#xff0c;从而导致查询时间延长。以下是一些解决方案&#xff1a; 方案一&#xff1a;使用索引优化查询 确定查询中使用的列&#xff0c;并为这些列创…

ElasticSearch之安装

参照Installing Elasticsearch&#xff0c;完成验证集群的部署。 操作步骤 下载软件包和摘要文件。 wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.11.1-linux-x86_64.tar.gz wget https://artifacts.elastic.co/downloads/elasticsearch/elast…

应用软件安全编程--26不要硬编码敏感信息

硬编码如密码、服务器 IP 地址、加密密匙这样的敏感信息&#xff0c;会将信息暴露给攻击者。任何一个可以访问类文件的人都可以对其进行反编译&#xff0c;然后得到敏感信息。因此&#xff0c;程序不能对敏感信息进行硬编码。对敏感信息进行硬编码会使代码管理变得更复杂。例如…

A____Z____RECOVER____DATA勒索恢复---惜分飞

有客户MySQL数据库被黑,业务库中表被删除,并创建A____Z____RECOVER____DATA库,里面有一张readme表,内容为: mysql> select * from readme \G; *************************** 1. row *************************** zh_content: 请尽快与我们取得联系&#xff0c;否则我们将会公…

第28期 | GPTSecurity周报

GPTSecurity是一个涵盖了前沿学术研究和实践经验分享的社区&#xff0c;集成了生成预训练Transformer&#xff08;GPT&#xff09;、人工智能生成内容&#xff08;AIGC&#xff09;以及大型语言模型&#xff08;LLM&#xff09;等安全领域应用的知识。在这里&#xff0c;您可以…

【linux】进行间通信——共享内存+消息队列+信号量

共享内存消息队列信号量 1.共享内存1.1共享内存的原理1.2共享内存的概念1.3接口的认识1.4实操comm.hppservice.cc &#xff08;写&#xff09;clint.cc &#xff08;读&#xff09; 1.5共享内存的总结1.6共享内存的内核结构 2.消息队列2.1原理2.2接口 3.信号量3.1信号量是什么3…

Linux 常用命令学习笔记

Linux 常用命令学习笔记 1. 查看文件和目录 列出文件和目录详细信息 ls -al参数说明&#xff1a; -a&#xff1a;显示所有文件&#xff0c;包括隐藏文件。-l&#xff1a;以列表形式显示&#xff0c;并包含文件的详细信息&#xff0c;如权限、所有者、大小等。 2. 列出进程…

如何开发干洗店用的小程序

洗护行业现在都开始往线上的方向发展了&#xff0c;越来越多的干洗店都推出了上门取送服务&#xff0c;那么就需要开发一个干洗店专用的小程序去作为用户和商家的桥梁&#xff0c;这样的小程序该如何开发呢&#xff1f; 一、功能设计&#xff1a;根据干洗店的业务需求和小程序的…

lnmp环境部署极简保姆级教程(nginx+php+mysql)

lnmp极简保姆级教程&#xff08;nginxphpmysql&#xff09; nginx 下载安装 https://nginx.org/download yum -y install make zlib zlib-devel gcc-c libtool openssl openssl-devel #编译环境cd /opt wget https://nginx.org/download/nginx-1.25.3.tar.gz tar zxvf ngin…

算法-二叉树-简单-二叉树的直径、将有序数组转换成二叉搜索树

记录一下算法题的学习9 二叉树的直径 题目&#xff1a;给你一棵二叉树的根节点&#xff0c;返回该树的 直径 。 二叉树的 直径 是指树中任意两个节点之间最长路径的 长度 。这条路径可能经过也可能不经过根节点 root 。两节点之间路径的 长度 由它们之间边数表示 读完题目&…

java通过年月获取当前月所有周(跨月),获取每周开始日期和结束日期

/*** 根据年月返回本月共几周&#xff0c;每周开始与结束日期*/public static List<Map<String, String>> queryWeek(String year, String month) throws ParseException {/** 周 **/final String[] weeks { "第一周", "第二周", "第…

浏览器中(不使用pdf插件)下载pdf文件的方法

downloadPdfFnc(pdfUrl, pdfName){// 构建文件内容fetch(pdfUrl).then(response > response.blob()).then(blob > {const url URL.createObjectURL(blob);const a document.createElement(a);a.href url;a.download ${pdfName}.pdf; // 设置下载文件的名称a.style.di…

2014年3月24日 Go生态洞察:Go地鼠的故事

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

PRD学习

产品经理零基础入门&#xff08;五&#xff09;产品需求文档PRD&#xff08;全16集&#xff09;_哔哩哔哩_bilibili 1. PRD的2种表现形式 ① RP格式 &#xff08;1&#xff09;全局说明 ② 文档格式

redis之主从复制和哨兵模式

&#xff08;一&#xff09;redis的性能管理 1、redis的数据缓存在内存中 2、查看redis的性能&#xff1a;info memory&#xff08;重点&#xff09; used_memory:904192&#xff08;单位字节&#xff09; redis中数据占用的内存 used_memory_rss:10522624 redis向操作系统…

广告行业中那些趣事系列66:使用chatgpt类LLM标注数据并蒸馏到生产小模型

导读&#xff1a;本文是“数据拾光者”专栏的第六十六篇文章&#xff0c;这个系列将介绍在广告行业中自然语言处理和推荐系统实践。本篇主要介绍使用chatgpt类LLM进行数据标注任务并蒸馏到生产小模型&#xff0c;对于希望使用chatgpt类LLM进行打标并部署到生产任务中的小伙伴可…

JVM的垃圾收集算法

1.算法的分类 1.1标记清除算法 第一步&#xff1a;标记&#xff08;找出内存中需要回收的对象&#xff0c;并且把它们标记出来&#xff09; 根据可达性算法&#xff0c;标记的是存活的对象&#xff0c;然后将其他的空间进行回收 第二步&#xff1a;清除&#xff08;清除掉被…

Sentinel 监控数据持久化(mysql)

Sentinel 实时监控仅存储 5 分钟以内的数据&#xff0c;如果需要持久化&#xff0c;需要通过调用实时监控接口来定制&#xff0c;即自行扩展实现 MetricsRepository 接口&#xff08;修改 控制台源码&#xff09;。 本文通过使用Mysql持久化监控数据。 1.构建存储表&#xff08…

使用OpenCV将图像转换为NV12格式并加载NV12数据

摘要&#xff1a;在新项目中&#xff0c;需要为上层应用开放几个接口&#xff0c;但又不想让上层应用过多依赖OpenCV。本文将详细介绍如何使用C和OpenCV&#xff0c;通过加载图片并转换为NV12格式&#xff0c;实现对图像数据的处理&#xff0c;以及如何加载NV12数据并显示。这些…

QT基础入门【QSS】QT伪状态类型和实例

1、伪装器类型 伪状态描述:active当部件位于活动窗口中时设置此状态。:adjoins-item当 QTreeView 的 ::branch 邻接到一个项时设置此状态。:alternate当 QAbstractItemView 绘制每一行时,如果 QAbstractItemView::alternatingRowColors() 设置为 true,则为每一行的交替行。:b…