欧美三级电影完整|亚洲一二三四久久|性爱视频精品一区二区免费在线观看|国产精品啪啪视频|婷婷六月综合操人妻视频网站|99爱免费视频在线观看|美女一级片在线观看|北京熟女88av|免费看黄色A级电影|欧美黄色毛片儿

Android:kotlin中Gson與JSON的泛型映射解析解決方案

2023-04-12


背景:


在Android中,kotlin的使用,可以極大美化代碼和帶來代碼上的簡(jiǎn)潔,但是kotlin之前,android的主要語言是Java。

在android中,解析數(shù)據(jù)是比較常見的手法。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中叫數(shù)據(jù)data
 
data class People(var name:String="",var sex:String="");
 
或者直接定義一個(gè)class類也行
class People{
var name:String=""
var sex:String=""
}

解析GSON:

我們?cè)谧鼋馕鲎詈媚茏龅酵ㄓ?,所以在做解析工具有點(diǎn)不同,如下




object GsonUtil {

    public inline fun  getGsonObject(json: String): T? {
        val result = Gson().fromJson(json)
        return result

    }
//type 泛型擴(kuò)展
    inline fun  Gson.fromJson(json: String) = this.fromJson(json, object : TypeToken() {}.type)


}



GSON在kotlin的最大泛型處理在于type部分,所以我們?cè)趦?nèi)部通過擴(kuò)展函數(shù),對(duì)Gson.fromJson進(jìn)行擴(kuò)展,這樣我們就可以直接使用方法參數(shù)泛型解析。


這里面不同于Java的函數(shù)泛型,kotlin支持方法泛型。


總結(jié):


不同在于bean的定義,kotlin中叫data class


本文僅代表作者觀點(diǎn),版權(quán)歸原創(chuàng)者所有,如需轉(zhuǎn)載請(qǐng)?jiān)谖闹凶⒚鱽碓醇白髡呙帧?/p>

免責(zé)聲明:本文系轉(zhuǎn)載編輯文章,僅作分享之用。如分享內(nèi)容、圖片侵犯到您的版權(quán)或非授權(quán)發(fā)布,請(qǐng)及時(shí)與我們聯(lián)系進(jìn)行審核處理或刪除,您可以發(fā)送材料至郵箱:service@tojoy.com