国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

gson解析注意事項

2019-11-06 09:37:25
字體:
來源:轉載
供稿:網友

今天在解析json時,遇到解析錯誤的問題。 總結來說,字段必須要一致,字段類型要一致,序列化,還要在混淆的情況下要保持相應的類不被混淆。 要保持bean 不被混淆,在 PRoguard-rules.pro添加如下代碼:

-keep class 包名.** { *; }

如下面這個路徑下的UserInfo

com.baidu.app.improve.bean.UserInfo

對應的混淆文件配置:

-keep class com.baidu.app.improve.bean.** { *; }

若在混淆情況下不做如此設置則會報諸如“com.a.b.b.h cannot be cast to com.baidu.app.improve.bean.UserInfo ”這樣的異常。 當然解析方式不正確的話,也會報此異常。

這樣一個json數據:

{ "code": 0, "message": "", "result": { "id": "081234568945", "sn": "", "nickname": "abcd", "mobile": "18888888", "email": "", "avatar": "", "birth": "", "gender": "1", "name": "", "longitude": "", "latitude": "", "availablePoint": 0, "receivePoint": 0, "makePoint": 0, "age": 0, "genderDescr寫的bean如下:

ResultBean

public class ResultBean<T> { private T result; private int code; private String message; .....get/setter方法 }

UserInfo

public class UserInfo implements Serializable{ private String genderDescription; private int receivePoint; private String gender; private String residenceParentIds; private int makePoint; private String latitude; private String mobile; private String birth; private String avatar; private String residenceId; private String residenceMergerName; private String memberTypeName; private String nickname; private String name; private int availablePoint; private String id; private String sn; private String email; private int age; private String longitude; private String residenceName; ......get/setter方法......}

gson解析的正確姿勢為:

private static TextHttpResponseHandler mHandler = new TextHttpResponseHandler() { @Override public void onStart() { super.onStart(); log("HttpResponseHandler:onStart"); } @Override public void onFailure(int statusCode, Header[] headers, String responseString, Throwable throwable) { log("HttpResponseHandler:onFailure responseString:" + responseString); } @Override public void onSuccess(int statusCode, Header[] headers, String responseString) { Type type = new TypeToken<ResultBean<UserInfo>>() { }.getType(); ResultBean<UserInfo> resultBean = App
Operator.createGson().fromJson(responseString, type); ...............}

gson解析集合 json

{ "code": 0, "message": "", "result": { "currentCount": 3, "dataList": [ { "id": "6", "longitude": 116.42565, "latitude": 39.84026, "isRead": true, "isCollection": true, "deadline": "2017-02-24 17:34", "memberType": "個人", "pupuContent": "", "publishDate": "2017-02-23 17:34", "intervalTime": "5天", "publisher": "", "publisherAvatar": "", "recipientName": "", "recipientAvatar": "", "distance": 0 }, { "id": "5", "longitude": 116.42565, "latitude": 39.84026, "isRead": true, "isCollection": true, "deadline": "2017-02-24 17:34", "memberType": "個人", "pupuContent": "", "publishDate": "2017-02-23 17:34", "intervalTime": "5天", "publisher": "", "publisherAvatar": "", "recipientName": "", "recipientAvatar": "", "distance": 0 }, { "id": "2", "longitude": 116.42565, "latitude": 39.84026, "isRead": false, "isCollection": false, "deadline": "2017-02-24 17:34", "memberType": "個人", "pupuContent": "", "publishDate": "2017-02-23 17:34", "intervalTime": "5天", "publisher": "", "publisherAvatar": "", "recipientName": "", "recipientAvatar": "", "distance": 0 } ], "pageNo": 1, "pageSize": 100, "isLastPage": true, "lastCount": 1, "count": 3 }}public class PageBean<T> implements Serializable { private int currentCount; private List<T> dataList; .........get/setter方法....... }

Tweet

public class PPMessage implements Serializable { private String id; private int distance; private String recipientAvatar; private double latitude; private String pupuContent; private boolean isRead; private boolean isCollection; private String publishDate; private int min; private String publisherAvatar; private String publisher; private String recipientName; private String memberType; private String deadline; private double longitude; .......get/setter方法......}

解析

TextHttpResponseHandler mHandler = new TextHttpResponseHandler() { @Override public void onStart() { super.onStart(); log("HttpResponseHandler:onStart"); } @Override public void onFailure(int statusCode, Header[] headers, String responseString, Throwable throwable) { onRequestError(); log("HttpResponseHandler:onFailure responseString:" + responseString); } @Override public void onSuccess(int statusCode, Header[] headers, String responseString) { log("HttpResponseHandler:onSuccess responseString:" + responseString); try { ResultBean<PageBean<T>> resultBean = AppOperator.createGson().fromJson(responseString, getType()); ................}....................

這里用了泛型。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 娄烦县| 开平市| 宣汉县| 合阳县| 信阳市| 青川县| 肇庆市| 灵石县| 平远县| 会泽县| 安仁县| 砚山县| 苍溪县| 卢氏县| 台北县| 仙居县| 明水县| 四子王旗| 凉山| 南溪县| 高平市| 小金县| 临安市| 武安市| 元阳县| 隆林| 宁国市| 霍州市| 罗江县| 湟中县| 赤峰市| 敦煌市| 伊宁县| 武鸣县| 白水县| 宝山区| 三江| 洞头县| 宁化县| 宜城市| 富平县|