摘要:随着人们的生活水平的提高,连带着人与人之间的相亲渠道也进一步改善。于是与两个老油条会心一笑,一起策划了今天的这次相亲之旅。的膨胀心再一次暴涨。但天色以晚,今天的相亲也只能就此打住,有待进一步商榷。
随着人们的生活水平的提高,连带着人与人之间的相亲渠道也进一步改善。最近偶尔看到几档相亲的综艺节目,不管是平民还是明星。可见相亲的热潮正扑面而来。这不Google与Java两个老家伙也坐不住了,分别想着自己排行285的儿子Gson与自己排行570的女儿List
Google回到家就将此事告诉了Gson,通知他明天就去Android Studio匆匆那年餐厅见面。Gson欲言欲止,好像另有隐情,但在父亲高大身躯与凌厉的眼神下答应了下来,而且父亲能够在这众多的儿子中想到自己,也不忍心拒绝父亲的善意。
Gson回到房,躺着床上,脑海回想起自己与Java排行520的女儿Object的地下恋情。
Gson与Object的第一次见面还是被它的Json字符串装扮所吸引。那一天她宛如一朵含苞待放的牡丹花,美而不妖,艳而不俗,千娇百媚,无与伦比。(以上均为Gson视角,请勿迷恋。以下为code视角)
{ "marquee": { "content": "翠绿烟纱散花裙", "status": true } }
这一下就激起了Gson的欲望,而且Gson还有点小得意,对于这种女孩他已经有自己的一套完整攻略方案。既然知道了它的Json字符串格式,就可以迅速创建出它对应的java类
public class HomeMarqueeModel { private MarqueeModel marquee; public static class MarqueeModel { private String content; private boolean status; public String getContent() { return content; } public boolean isStatus() { return status; } } public MarqueeModel getMarquee() { return marquee; } }
然后再根据API攻略法则第3089条,使用fromJson方案进行攻略,成功率高达100%
HomeMarqueeModel model = new Gson().fromJson(jsonStr, HomeMarqueeModel.class);
就这样Gson完成了对Object的第一次攻略,获取到了Object的好感。但Gson不满足,为了完全让Object对自己死心塌地,必须应对Object的所有Json字符串格式。
回去之后,Gson在Android Studio微信平台与Java中的好哥们泛型T打探Object的特性。经过交流,发现T它刚好是这方面的能手,T告诉Gson每一个Object都有它独用的Class属性,为了代表所有的Class类型,刚好可以使用它的泛型T来表示,于是就有了Class
第二天,Gson主动出击邀请Object去Android Studio匆匆那年餐厅吃饭。Gson还是使用它的fromJson方法,只是在这方法上加入了T的思想。
publicT getObjectGirl(String jsonStr, Class tGirl) { T girl = getGson().fromJson(jsonStr, tGirl); return girl; }
就这样,Gson完成对Object的所有类型的攻略,从此不再为女友而发愁。
回想结束,拉回到现实,对于明天的相亲,Gson打算先用之前的方法试一下,毕竟Gson经过前面的成功实例,还是有点小膨胀,
早上9点,Gson整装待发,开着自己的兰博基尼向Android Studio匆匆那年餐厅进发。大约10点Gson到达餐厅,且已经选好了一处风景优雅且面朝大海的位置,静静的等候List的到来。半小时之后,只见一个身穿藕色纱衫的女孩,脸带微笑,身形苗条,长发披向背心,用一根银色丝带轻轻挽住,迎面而来。Gson望着她的身影,只觉这女孩身旁似有烟霞轻笼,当真非尘世中人。(以上均为Gson视角,请勿迷恋。以下为code视角)
[ { "title": "身穿藕色纱衫", "url": "http://127.0.0.1:8000/admin2/operation/banner-list/", "status": true }, { "title": "长发披向背心", "url": "http://127.0.0.1:8000/admin2/operation/banner-list/", "status": true } ]
为了保守起见,Gson决定还是按部就班来,首先创建出该Json字符串列表的java类
public class HomeBannerModel { private String title; private String url; private boolean status; public String getTitle() { return title; } public String getUrl() { return url; } public boolean isStatus() { return status; } }
然后再使用fromJson方案进行攻略,稍微不同的是这里它是一个数组
HomeBannerModel[] array = new Gson().fromJson(jsonStr, HomeBannerModel[].class); Listlist = Arrays.asList(array);
嗯,看样子效果不错,有进一步发展的机会。于是Gson又展示它的另一个攻略
Type type = new TypeToken>(){}.getType(); List
list = new Gson().fromJson(jsonStr, type);
果然,Gson再一次成功逗笑了List。Gson的膨胀心再一次暴涨。Gson于是大胆起来,套用之前泛型T的思想。于是有了下面的第一次T尝试
发现不行,不支持这种泛型T解析。既然这种不行,还就换另一种,于是就有了第二次T的尝试
publicList getListGirl(String jsonStr) { Type type = new TypeToken >(){}.getType(); List
listGirl = new Gson().fromJson(jsonStr, type); return listGirl; }
发现没问题,那么再来实践运行一下。发现会报如下异常,导致小姐姐不开心。
java.lang.AssertionError: illegal type variable reference
说明Gson解析不支持该泛型T书写,导致Type解析出错,Gson一下懵了,那该咋整呢?虽然前面的攻略有效果,但最后的尝试没有成功。但天色以晚,今天的相亲也只能就此打住,有待进一步商榷。
请教回到家Gson一直挂念着这件事,一筹莫展。Google看到自己儿子愁眉苦展的样子,不经询问今天的进展。了解情况后,Google给Gson的建议是,可以去请教下ParameterizedType。于是Gson迫不及待的去找ParameterizedType学习人生真谛。
经过请教,发现ParameterizedType是继承于Type,自己另外提供了三个抽象方法,分别为
Type[] getActualTypeArguments() 返回真正所需的Type类型数组
Type getRawType() 返回原始的Type类型
Type getOwnerType() 返回此类的成员类型,例如:O
所以为了解决之前的问题,Gson打算先自定义一个GirlParameterizedType类,让它实现ParameterizedType接口。code如下:
private static class GirlParameterizedType implements ParameterizedType { private Class aClass; GirlParameterizedType(Class aClass) { this.aClass = aClass; } @NonNull @Override public Type[] getActualTypeArguments() { return new Type[]{aClass}; } @NonNull @Override public Type getRawType() { return List.class; } @Override public Type getOwnerType() { return null; } }
既然找到问题所在,Gson迫不及待的邀请List去逛Android Studio商城,希望明天能够顺利拿下List女神。
再次相见在Android Studio商城,Gson再一次看到了List,只不过她今天已经换了一身装扮。只见她身穿粉红玫瑰香紧身袍袍袖上衣,下罩翠绿烟纱散花裙,腰间用金丝软烟罗系成一个大大的蝴蝶结,鬓发低垂斜插碧玉瓒凤钗,显的体态修长妖妖艳艳勾人魂魄。不过Gson已早有准备,直接步入主题,拿出昨天准备好的GirlParameterizedType。
publicList getListGirl(String jsonStr, Class tClass) { Type type = getGson().fromJson(response, new HttpClientParameterizedType(tClass)); List listGirl = new Gson().fromJson(jsonStr, type); return listGirl; }
发现是如此的简单,一击必中,直击List芳心。于是一小时之后,Gson双手已经挂满了商品,额头也满头大汗,但List还有意未尽的样子,Gson万万没想到最后居然败在购物上,果然带女孩来商城就是个错误的选择...
这次的相亲也算完美结束,只不过Gson心中又有了心的疑虑,对于Object与List都是百年难遇的女孩,该如何抉择呢?要不各位看官这个抉择就交给你们,相信你们会做出正确的抉择的,毕竟大家都不想在code的人生中留下一丝bug的身影。
最后,不知大家看的感受如何,有什么感受也可以反馈给我。如果喜欢这种方式,可以关注我的公众号:Android补给站,以便及时推送最新文章给你哟~
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/74484.html
小编写这篇文章的一个主要目的,主要是用来给大家继续讲解关于python的一些实例,比如综合运用Python+SeaTable,运用这个技能,可以实现相关的一些计算技能。比如可以实现连续性的计算两个工作日天数,下面给大家详细解答下。 当我们计算两个日期间的间隔天数时,通常是用结束日期减去开始日期,但在实际的项目管理、任务管理、工作计划等场景中,某些时间段会涉及双休日、法定节假日,甚至还有公司自...
小编写这篇文章的一个主要目的,主要是来给大家去做一个介绍,介绍的内容主要是关于Python的一些知识,其中的内容包含有xpath,JsonPath,bs4等一些知识,主要是去介绍他们的一些基本使用方法,具体的内容,下面就给大家详细解答下。 1.xpath 1.1 xpath使用 google提前安装xpath插件,按ctrl+shift+x出现小黑框 安装lxml库pip instal...
本文主要是给大家介绍了pythonPyVCF文档处理VCF文件类型范例详细说明,感兴趣的小伙伴值得借鉴参考一下,希望可以有一定的帮助,祝愿大家多多的不断进步,尽快工作上得到晋升 前言 vcf文件的全名是是variantcallfile,即突变性鉴别文档,这是基因工作内容过程中产生的一类文档,存放的是基因里的突变性信息内容。根据对vcf文件展开分析,可以获得自我的基因变异信息内容。嗯,总而言...
阅读 1141·2023-04-26 02:46
阅读 636·2023-04-25 19:38
阅读 652·2021-10-14 09:42
阅读 1250·2021-09-08 09:36
阅读 1367·2019-08-30 15:44
阅读 1333·2019-08-29 17:23
阅读 2252·2019-08-29 15:27
阅读 816·2019-08-29 14:15