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





