国内最专业的IT技术学习网

UI设计

当前位置:主页 > UI设计 >

当JSON解析遇上了泛型该如何处理泛型擦除问题

发布时间:2019/09/04标签:   类型    点击量:

原标题:当JSON解析遇上了泛型该如何处理泛型擦除问题
JSON是一种轻量级的数据交流格局,简练和清楚的档次构造使得 JSON 成为幻想的数据交流言语,常被用于现实名目中。Java生态圈中有许多处置JSON格局化的类库,如json-lib框架、Jackson、Google的Gson、阿里的FastJson等,经过这些类库能够使咱们愈加轻便地处置JSON。上面本文重要经过一个现实案例探讨剖析在剖析JSON字符串的进程中碰到泛型该怎样处置。 案例描写 成绩引出 处置计划 道理剖析1、案例描写起首先容三个类,为了便于懂得将代码省去非要害局部。 PrepCommonResp 是一个通用呼应类,为了支撑多种前往范例,设置了此中一个属性result为泛型。 publicclassPrepCommonResp{privateTresult;//猎取挪用前往值privateStringcode="000000";//猎取过错码privateStringmsg="Success";//这里省略gettersetter等} LeaderboardResp 是一个Leaderboard接口呼应类,此中有一个属性是一个List聚集聚集中的工具为LeaderboardPojo publicclassLeaderboardRespimplementsSerializable{ListleaderboardList;//这里省略gettersetter等} LeaderboardPojo 是一个实体类 publicclassLeaderboardPojo{//基础属性}需要:将一个JSON字符串的String范例数据剖析到指定了泛型的通用呼应类实例PrepCommonResp工具中。当JSON解析遇上了泛型该如何处理泛型擦除问题2、成绩引出一开端编写时,采纳了Jackson的ObjectMapper类readValue方式来停止剖析,详细代码以下。ObjectMappermapper=newObjectMapper();PrepCommonRespresp=mapper.readValue(result,PrepCommonResp.class);咱们等待的成果是JSON字符串被准确剖析,而且result属性的值是以指定泛型LeaderboardResp的格局存储。然而经过断点以后咱们发觉result属性的值是以LinkedHashMap的情势存储,与冀望成果不符。当JSON解析遇上了泛型该如何处理泛型擦除问题3、处理计划在剖析起因之前,先来讲说处理方法。处理方法有多种,咱们经过了实验对照了种种计划以后抉择了此中一种较为轻便的就是采纳Gson的fromJson方式来处理,详细代码以下://实验应用GsonGsongson=newGson();PrepCommonRespresp=gson.fromJson(result,newTypeToken<>>(){}.getType());Listlist=resp.getResult().getLeaderboardList();运转成果以下,result的值以咱们冀望的LeaderboardResp情势存储当JSON解析遇上了泛型该如何处理泛型擦除问题4、道理剖析1. 先懂得泛型与编译器虚构机的关联以及甚么是擦除?剖析: Java言语的泛型基础上是在编译器中完成的。由编译器履行范例检测和揣摸后天生一般的非泛型的字节,虚构机是完整无感知泛型存在的,这类完成技巧称为擦除。编译器应用泛型范例信息保障范例保险,而后在天生字节码之前将其肃清。

上一篇:没有了

下一篇:没有了

返回
版权信息Copyright ? IT技术教程 版权所有??? ICP备案编号:鲁ICP备09013610号