Android:kotlin中Gson与JSON的泛型映射解析解决方案
2023-04-12
背景:
在Android中,kotlin的使用,可以极大美化代码和带来代码上的简洁,但是kotlin之前,android的主要语言是Java。
在android中,解析数据是比较常见的手法。JavaBean,GSON,JSONOBJECT,这三大员是合作伙伴,但是在kotlin中依然支持这种写法,但是kotlin的data GSON,JSONOBJECT,与Java解析有所不同
Java:
People{
private String name="";
private String sex="";
public void setName(String name)
{
this.name=name
}
public void setSex(String sex){
this.sex=sex;
}
public String getName(){
return name;
}
public String getSex()
{
return sex;
}
}
Json:{"name":"zhangshan","sex":"男"}
解析如下
People people=new Gson().fromJson(json,People.class);
这是Java的解析。
kotlin:
kotlin的解析与Java不同,JavaBean在kotlin中叫数据data
data class People(var name:String="",var sex:String="");
或者直接定义一个class类也行
class People{
var name:String=""
var sex:String=""
}
解析GSON:
我们在做解析最好能做到通用,所以在做解析工具有点不同,如下
object GsonUtil {
public inline fun getGsonObject(json: String): T? {
val result = Gson().fromJson(json)
return result
}
//type 泛型扩展
inline fun Gson.fromJson(json: String) = this.fromJson(json, object : TypeToken() {}.type)
}
GSON在kotlin的最大泛型处理在于type部分,所以我们在内部通过扩展函数,对Gson.fromJson进行扩展,这样我们就可以直接使用方法参数泛型解析。
这里面不同于Java的函数泛型,kotlin支持方法泛型。
总结:
不同在于bean的定义,kotlin中叫data class
本文仅代表作者观点,版权归原创者所有,如需转载请在文中注明来源及作者名字。
免责声明:本文系转载编辑文章,仅作分享之用。如分享内容、图片侵犯到您的版权或非授权发布,请及时与我们联系进行审核处理或删除,您可以发送材料至邮箱:service@tojoy.com



