1. 程式人生 > >使用google的Gson庫和alibaba的Fastjson庫解析json數據的區別

使用google的Gson庫和alibaba的Fastjson庫解析json數據的區別

fastjson gson fastjson 與 gson的區別

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

原理:

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

利弊

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

使用google的Gson庫和alibaba的Fastjson庫解析json數據的區別