溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

使用google的Gson庫和alibaba的Fastjson庫解析json數(shù)據(jù)的區(qū)別

發(fā)布時間:2020-07-06 19:36:25 來源:網(wǎng)絡(luò) 閱讀:2531 作者:扶垚而上 欄目:移動開發(fā)

問題:

項目中原先使用gson解析數(shù)據(jù),后來由于各種原因換成了fastjson;那么問題來了,如果你定義的實體對象的屬性方法和屬性名不一致,那么fastjson解析的數(shù)據(jù)始終為空,而gson始終可以解析。

原理:

gson解析使用的是屬性匹配法,無論你屬性方法定義成什么樣。
fastjson使用的屬性方法匹配法,即你必須將要獲取的數(shù)據(jù)的屬性字段和方法字段定義成getXX()才個可以。
    eg:private String code;public String getCode(){ return code; }

利弊

有一種情況,后臺兩個接口,拿去相同的數(shù)據(jù),但是返回的個別字段不一樣,后臺又不愿意改,你前端又不想在重新寫一個類,這怎么辦呢?
接口一的數(shù)據(jù):
{
"title":"接口一",
"url":"http://www.baidu.com"
}
接口二的數(shù)據(jù):
{
"title":"接口一",
"urlTmp":"http://www.baidu.com"
}
使用gson很方便:只要定義一個抽象類,兩個接口實現(xiàn)不同的字段,就ok了
abstarct class C{
private String title;
public abstarct String getUrl();
}
class A extends C{
//只要實現(xiàn)抽象方法就好
private String url;
public String getUrl(){ return url;}
}
class B extends C{
private String urlTmp;
public String getUrl(){ return urlTmp;}
}
而fastjson,就解析不了;但可以繞過,采用Map對象去解析,這就比較麻煩了
向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI