作為一個新手。。每次解析數據真心累,我之前解析JSON數據是這樣解析的JSONObject jsonObjs = new JSONObject(fanhui); JSONArray jsonObja = jsonObjs.getJSONArray("data"); if (jsonObja != null) { newlist = new ArrayList<HashMap<String, Object>>(); for (int i = 0; i < jsonObja.length(); i++) { JSONObject jsonObj = jsonObja.getJSONObject(i); HashMap<String, Object> map = new HashMap<String, Object>(); map.put("dc", jsonObj.getString("dc")); map.put("type", jsonObj.getString("type")); map.put("sn", jsonObj.getString("sn")); map.put("time", jsonObj.getString("time")); map.put("model", jsonObj.getString("model")); map.put("station", jsonObj.getString("station")); map.put("repair_engneer", jsonObj.getString("repair_engneer")); map.put("partsn", jsonObj.getString("partsn")); map.put("location", jsonObj.getString("location")); map.put("description", jsonObj.getString("description")); map.put("failReason", jsonObj.getString("failReason")); map.put("lc", jsonObj.getString("lc")); map.put("dc", jsonObj.getString("dc")); map.put("manufacturer", jsonObj.getString("manufacturer")); newlist.add(map);然后每次解析對我來說都是CNM。內心崩潰的。后來看書和看別人的文章知道了GSON。。就各種百度使用方法。。接下來我就教大家使用方法。
1.解析。普通型數據就是沒有數據頭的。
獲取到JSON數據之后,先轉化為String,我這里用的是OKHTTP
final String res = response.body().string();然后用Handler或者新開線程去解析跟新UIrunOnUiThread(new Runnable() { @Override public void run() {Gson gson = new Gson(); login lo = gson.fromJson(res,login.class); //這里login是一個實體類。就是把你要解析的數據自己新建一個實體類。 cookie.setText(lo.getChinesename());//這個cookie是一個TextView,這一步就是顯示其中的chinesename到控件上。 } });就是這樣新建實體類。public class login { PRivate int code; public String getChinesename() { return chinesename; } public void setChinesename(String chinesename) { this.chinesename = chinesename; } public int getCode() { return code; } public void setCode(int code) { this.code = code; } private String chinesename;}第二種方式。不管解析多么復雜的JSON數據。多少個數據頭。都不用擔心。{ "reason": "成功的返回", "result": { "stat": "1", "data": [ { "uniquekey": "f907b629f6c912fc07431de58d741481", "title": "蔣勁夫最新廣告大片曝光 籃球boy目光如炬", "date": "2017-02-28 08:34", "category": "頭條", "author_name": "新華網", "url": "http://mini.eastday.com/mobile/170228083404688.html", "thumbnail_pic_s": "http://09.imgmini.eastday.com/mobile/20170228/20170228083404_4bb9f28c06311beb3617e92caf8d6d0d_1_mwpm_03200403.jpeg", "thumbnail_pic_s02": "http://09.imgmini.eastday.com/mobile/20170228/20170228083404_69bacbdcc57d97f7bfe76610a5f6ad66_2_mwpm_03200403.jpeg", "thumbnail_pic_s03": "http://09.imgmini.eastday.com/mobile/20170228/20170228083404_34739a168481ee9c81541bc0bb2a3791_3_mwpm_03200403.jpeg" }, { "uniquekey": "2446368ff46178d5a96118c634e90fd5", "title": "澳大利亞華裔被滅門兇手收養 庭上指證曾遭其多次性侵", "date": "2017-02-28 08:47", "category": "頭條", "author_name": "環球網", "url": "http://mini.eastday.com/mobile/170228084744624.html", "thumbnail_pic_s": "http://09.imgmini.eastday.com/mobile/20170228/20170228084744_f52b522e254792801c171d9fed92258a_1_mwpm_03200403.jpeg" }, { "uniquekey": "88c225a97b514604494873fd4894dbb8", "title": "央媒刊文談麗江古城被嚴重警告:整治旅游市場亂象必痛下狠手", "date": "2017-02-28 08:47", "category": "頭條", "author_name": "中國青年報", "url": "http://mini.eastday.com/mobile/170228084707053.html", "thumbnail_pic_s": "http://04.imgmini.eastday.com/mobile/20170228/20170228084707_6feaabd5a1b29cd86dfef8b1853dc144_1_mwpm_03200403.jpeg" }, { "uniquekey": "b40e26ff6346bfc57debea383e99497b", "title": "連續五年“當頭炮”簡政放權讓更多權力公章不再任性", "date": "2017-02-28 08:41", "category": "頭條", "author_name": "中國青年網", "url": "http://mini.eastday.com/mobile/170228084111459.html", "thumbnail_pic_s": "http://09.imgmini.eastday.com/mobile/20170228/20170228084111_59f901484a2bab5eb3c1bac8dc0f6de5_1_mwpm_03200403.jpeg" }, { "uniquekey": "7d1caf9baaa9b9bf0152321f2f271fb9", "title": "《花兒與少年3》錄制 湖南臺為什么選擇這8位明星?", "date": "2017-02-28 08:31", "category": "頭條", "author_name": "TV嗶", "url": "http://mini.eastday.com/mobile/170228083147895.html", "thumbnail_pic_s": "http://02.imgmini.eastday.com/mobile/20170228/20170228083147_32a261122ad6912ba4307b18759c02ba_1_mwpm_03200403.jpeg", "thumbnail_pic_s02": "http://02.imgmini.eastday.com/mobile/20170228/20170228083147_32a261122ad6912ba4307b18759c02ba_2_mwpm_03200403.jpeg", "thumbnail_pic_s03": "http://02.imgmini.eastday.com/mobile/20170228/20170228083147_32a261122ad6912ba4307b18759c02ba_3_mwpm_03200403.jpeg" }, { "uniquekey": "8c159593caf7b99ea7800f006c1431cd", "title": "89屆奧斯卡鬧出史上最大烏龍 這個鍋到底誰背?", "date": "2017-02-28 08:22", "category": "頭條", "author_name": "搜狐娛樂", "url": "http://mini.eastday.com/mobile/170228082256576.html", "thumbnail_pic_s": "http://06.imgmini.eastday.com/mobile/20170228/20170228082256_5a77dc1e74820fe4bb8113e0b1aa4b8b_1_mwpm_03200403.jpeg", "thumbnail_pic_s02": "http://06.imgmini.eastday.com/mobile/20170228/20170228082256_5a77dc1e74820fe4bb8113e0b1aa4b8b_2_mwpm_03200403.jpeg" } ] }, "error_code": 0}假設上面就是要解析的JSON數據。首先你先新建實體類。Android Studio有一個GSONFORMAT 的功能。就是你把這個JSON數據復制進去,會自動幫你生成實體類。你先新建一個CLASS 假設為News 然后在新建的Class里面點右鍵選擇Generate.在選擇GsonForMat 把JSON數據復制進去。就可以了。就會自動幫你生成實體類。實體類生成之后。在回到Activity中。把要解析的JSON數據轉為String.然后開始解析。比如我這里想要解析Data里面的數據Gson gson = new Gson();News news= gson.fromJson(arg0,News.class);ArrayList<News.ResultBean.DataBean> dataBeen = (ArrayList<News.ResultBean.DataBean>) news.getResult().getData();然后你要顯示文字的話GSON.ResultBean.DataBean b = list.get(position);tv.setText(b.getTitle());顯示圖片的話//c 是contextPicasso.with(c).load(list.get(position).getThumbnail_pic_s()).placeholder(R.mipmap.morentu).into(holder.picture);
新聞熱點
疑難解答