您好,登錄后才能下訂單哦!
前幾天做項目遇到了個關于服務器返回的JSONObject解析的問題,想記錄一下。
關于Json的解析一般用2種方法,第一是下載GSON的JAR包,采用GSON解析,這種解析雖然方便使用,但是對于一些特殊格式的Json字符串是行不通的。而且JavaBean也寫不出來。先上圖:
對于這樣的對象包對象的形式,不適合寫傳統的JavaBean,需要采用手動解析的形式。手動解析非常強大,基本可以對各種格式的Json字符串進行解析。
下面是我解析的類:
public class OriginalRankBean { public String author; public String play; public String pic; public String title; public String video_review; public List<OriginalRankBean> parse(JSONObject obj) { if (obj == null) { return null; } List<OriginalRankBean> datalist=new ArrayList<OriginalRankBean>(); obj = obj.optJSONObject("list"); for (int i = 0; i <obj.length(); i++) { if(obj.has(i+"")){ OriginalRankBean rank = new OriginalRankBean(); JSONObject optJSONObject = obj.optJSONObject(i + ""); rank.author = optJSONObject.optString("author"); rank.play = optJSONObject.optString("comment"); rank.pic = optJSONObject.optString("pic"); rank.title = optJSONObject.optString("title"); rank.video_review = optJSONObject.optString("video_review"); datalist.add(rank); } } return datalist; } }
在手動解析的javaBean中寫入方法,通過調用方法,直接返回一個集合。在外面進行方法的調用并傳入JSONObject,再創建一個集合進行接收就可以了。
注意:這里用opt可以防止報異常,因為opt內部已經做了判斷了,而使用get的形式需要拋異常。
在解析過程中,只拿自己需要的數據就可以了。
注意上來先判空,如果請求回來的JSONObject是空的話,那就沒必要解析了,直接return,去檢查url和請求網絡的方法是否出現了問題。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。