背景:

在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