在实际开发中,难免会与网络数据打交道,这就涉及到Json数据字段分析、解析,转换成JavaBean等相关内容。那么本文就围绕这几个点,为大家介绍几个技巧、插件,提升开发效率。下面开始正文。1.准备数据首先,我们需要有...
在实际开发中,难免会与网络数据打交道,这就涉及到 Json 数据字段分析、解析,转换成 Java Bean 等相关内容。那么本文就围绕这几个点,为大家介绍几个技巧、插件,提升开发效率。
下面开始正文。
1. 准备数据首先,我们需要有数据,以我在聚合数据上申请的菜谱大全为例[只有免费的1000次,用完就没了,请惜之],接口地址如下:
点击访问 api 接口
如果你发现上面的接口失效了,我备份了一份,访问 并手动复制即可。
其实,你完全可以自己申请一个 key 来测试,把上面接口的 key 换成你申请的就可以了。
申请地址:https://www.juhe.cn/docs/api/id/46
2.直观的查看数据类似于上面的接口,在开发中,后台同事给了接口,我们肯定要先看一眼,确认下是什么样的数据格式。那怎么看呢?把上面的接口粘贴到浏览器的地址栏,回车:
直接查看 Json 数据.png
卧槽,这乱七八糟的怎么看?
你在逗我.png
想必你和我一样,第一反应是崩溃的。别着急,自有办法。
使用 Chrome 浏览器的同学,可以借助 Json-handle 插件方面的查看 Json 数据:对JSON格式的内容进行浏览和编辑,以树形图样式展现JSON文档,并可实时编辑。
这是我用过的最好用的 Json 展示和编辑插件,如果有更好的,欢迎推荐。在 Chrome 商店中的地址如下:
https://chrome.google.com/webstore/detail/json-handle/iahnhfdhidomcpggpaimmmahffihkfnj?hl=zh-CN
装好插件后,再次刷新刚才的 api 地址,神奇的一幕发生了:
使用 Json-handle 查看.png
是不是很清晰?展开、收起,想怎么看就怎么看。许多对 Json 数据结构不了解的童鞋,可以借这个插件学习分析 Json 结构,很直观。
同时,其还具备其它同类插件没有的功能,直接将光标放在图片 URL 上,可以直接预览图片,GIF 也可以:
Json-handle 预览图片.png
更多功能等你去探索,我们接着往后。
3.生成 Json 对应的 Java Bean预览返回的 Json 数据后,你可能已经迫不及待想要解析数据了。且慢,在此之前,我们还差一步:生成 Java Bean,也就是我们常说的实体对象,这样才能将返回的 Json 数据转化成内存中的对象使用。
一说到这,我们立马头大了,再次预览上面的数据:
再次预览结构.png
我们的核心是 result 对象,其包含了一个 data 数组,对应着10个菜谱对象;每个菜谱对象又包含若干属性,有简单的类似 id,title的字段,但也有 albums,steps这样的复杂数组...
这样的数据结构,其复杂程度应该不亚于实际开发中大多数场景了。但是,这岂能难倒我们?
要知道这是我精心挑选出来做示例的 API,没有难度怎么有说服力。下面一起来秒杀它!
秒杀.jpg
根据上面的分析,假设我们关心 result 所包含的数据,那么我们的 Bean 实体的数据结构最后大致是这样的:
//result public class CookRequestResult { //result 包含的 data 数组,即若干菜谱 private List<DataBean> data; //data 中每个菜谱对象 public static class DataBean { //菜谱的 steps,即做菜时的若干步骤 private List<StepsBean> steps; //每个步骤对象 public static class StepsBean { } } }上述抛开了基本类型字段,简化后概括来说:
CookRequestResult 包含 DataBean 对象集合,DataBean 中又包含 StepsBean 对象集合。分别对应上面的 api 返回的 result,data 和 steps。
这样一个数据结构,手写起来,不仅麻烦,还容易出错,如何是好?这就轮到本文的第二个插件 GsonFormat 登场了。
登场.gif
下面简单说下从安装到使用的过程:
具体使用哪种方式看自己需求了,这块没有技巧可言,靠的是扎实的技术基础。
5.序列化对象至此,我们已经可以从容的应对 Json 的分析、生成 Java Bean 和解析 Json数据,还差最后一步:序列化 Java Bean。
在开发中,我们难免需要在组件之间传递数据,比如从列表页点击进入详情,此时通过 Intent 传递数据时就需要序列化对象。序列化对象的方式,一般有两种:
一想到 Parcelable 实现起来的复杂程度,我们懒癌又犯了,忍不住说服自己实现 Serializable,毕竟现在手机性能都不差,不差那点~~
但是,有些人懒癌比我们还严重,他们既考虑到性能问题,又希望自动生成实现 Parcelable 接口时需要写的代码。于是乎,对应的插件应运而生,一劳永逸。
我很欣赏你.jpg
序列化的效果就是上面贴出的代码,就不重复贴了。
最后,让 StepsBean 也实现 Parcelable,异曲同工了啊。
收工,关电脑出去浪,不负好时光~
6.总结至此,本文告一段落了。由于篇幅有限,许多细节没有展开讲,不过事无巨细,我把工具、思路抛出来,各位可以自行查阅、实践。实践过程中,有任何问题都可以留言提出。
来源: