大家都知道安卓客戶端解析json數(shù)據(jù)的第三方有許多框架fastjson ?Gson等,現(xiàn)在為大家推薦Gson。下面是原因。
除了Gson 還有阿里的fastjson,但是相比較來說Gson更加的穩(wěn)定,fastJson速度會更快。身為程序員的我們在保證程序穩(wěn)定運行的情況下,個人推薦使用Gson,下面放入一個 個人封裝的解析實體類(干貨哦)
public class JsonUtil {
@SuppressWarnings("unchecked")
public staticT fromJson(String json, Class type) {
Tt =null;
try{
Gson gson =newGson();
t = gson.fromJson(json, type);
}catch(Exception e) {
//TODO: handle exception
}
returnt;
}
public static List getList(String jsonString,Type type){
List list=null;
try{
Gson gson =newGson();
list = gson.fromJson(jsonString, type);
}catch(Exception e) {
}
returnlist;
}
/**
*將對象轉(zhuǎn)換為json
*@param
*@paramobj
*@return
*/
public static String toJson(Tobj) {
String jsonStr =null;
try{
Gson gson =newGson();
jsonStr=gson.toJson(obj);
}catch(Exception e) {
}
returnjsonStr;
}
}?
使用的話 ?:返回的json數(shù)據(jù)如果是單個數(shù)據(jù)化的可以調(diào)用?
SignBean signBeens = JsonUtil.fromJson(s, SignBean.class);
SignBean是一個客戶端封裝的實體類,s標(biāo)識返回的json數(shù)據(jù),此時signBeens表示解析后數(shù)據(jù)(已經(jīng)將對應(yīng)的json數(shù)據(jù)轉(zhuǎn)出轉(zhuǎn)換成對應(yīng)的實體類,此時我們只需要對該實體類的屬性進(jìn)行操作即可,記住重點SignBean 的屬性名一定要和返回的json數(shù)據(jù)名相同)
返回的json數(shù)據(jù)如果是個集合呢:
List<SignBean> signBeens= (List<SignBean>) JsonUtil.getList(s,new TypeToken<ArrayList<SingBean>>() {}.getType());
此時SignBeans 就是解析過后的集合,同上;操作該集合的對象的各個屬性就可以進(jìn)行操作返回數(shù)據(jù)。
Textview te=findviewbyId*(R.id.vv);
te.settext(signbeens.get(0).getSigned+"");
下面貼出來 SignBean的實體類:
public class SignBean implements Serializable {
//今天是否簽到
public int singed;
//是否簽到成功
public intsignSuccess;
publicListmlistDesc;
public intnum;
public intgetNum() {
returnnum;
}
public voidsetNum(intnum) {
this.num= num;
}
publicList getMlistDesc() {
returnmlistDesc;
}
public voidsetMlistDesc(List mlistDesc) {
this.mlistDesc= mlistDesc;
}
public intgetSignSuccess() {
returnsignSuccess;
}
public voidsetSignSuccess(intsignSuccess) {
this.signSuccess= signSuccess;
}
public intgetSinged() {
returnsinged;
}
public voidsetSinged(intsinged) {
this.singed= singed;
}
}