背景:
在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 <reified T> getGsonObject(json: String): T? { val result = Gson().fromJson<T>(json) return result } //type 泛型扩展 inline fun <reified T> Gson.fromJson(json: String) = this.fromJson<T>(json, object : TypeToken<T>() {}.type) }
GSON在kotlin的最大泛型处理在于type部分,所以我们在内部通过扩展函数,对Gson.fromJson进行扩展,这样我们就可以直接使用方法参数泛型解析。
这里面不同于Java的函数泛型,kotlin支持方法泛型。
总结:
不同在于bean的定义,kotlin中叫data class