json数据格式解析我自己分为两种;
一种是普通的,一种是带有数组形式的;
?
普通形式的:
服务器端返回的json数据格式如下:
{"userbean":{"Uid":"100196","Showname":"\u75af\u72c2\u7684\u7334\u5b50","Avtar":null,"State":1}}
分析代码如下:
//?TODO?状态处理?500?200?
????????????????int?res?=?0;?
????????????????res?=?httpClient.execute(httpPost).getStatusLine().getStatusCode();?
????????????????if?(res?==?200)?{?
????????????????????/*?
?????????????????????*?当返回码为200时,做处理?
?????????????????????*?得到服务器端返回json数据,并做处理?
?????????????????????*?*/?
????????????????????HttpResponse?httpResponse?=?httpClient.execute(httpPost);?
????????????????????StringBuilder?builder?=?new?StringBuilder();?
????????????????????BufferedReader?bufferedReader2?=?new?BufferedReader(?
????????????????????????????new?InputStreamReader(httpResponse.getEntity().getContent()));?
????????????????????String?str2?=?"";?
????????????????????for?(String?s?=?bufferedReader2.readLine();?s?!=?null;?s?=?bufferedReader2?
????????????????????????????.readLine())?{?
????????????????????????builder.append(s);?
????????????????????}?
????????????????????Log.i("cat",?">>>>>>"?+?builder.toString());
JSONObject?jsonObject?=?new?JSONObject(builder.toString())?
????????????????????????.getJSONObject("userbean");?
????????????????String?Uid;?
????????????????String?Showname;?
????????????????String?Avtar;?
????????????????String?State;?
????????????????Uid?=?jsonObject.getString("Uid");?
????????????????Showname?=?jsonObject.getString("Showname");?
????????????????Avtar?=?jsonObject.getString("Avtar");?
????????????????State?=?jsonObject.getString("State");
带数组形式的:
服务器端返回的数据格式为:
{"calendar":?
????{"calendarlist":?
????????????[?
????????????{"calendar_id":"1705","title":"(\u4eb2\u5b50)ddssd","category_name":"\u9ed8\u8ba4\u5206\u7c7b","showtime":"1288927800","endshowtime":"1288931400","allDay":false},?
????????????{"calendar_id":"1706","title":"(\u65c5\u884c)","category_name":"\u9ed8\u8ba4\u5206\u7c7b","showtime":"1288933200","endshowtime":"1288936800","allDay":false}?
????????????]?
????}?
}
分析代码如下:
//?TODO?状态处理?500?200?
????????????????int?res?=?0;?
????????????????res?=?httpClient.execute(httpPost).getStatusLine().getStatusCode();?
????????????????if?(res?==?200)?{?
????????????????????/*?
?????????????????????*?当返回码为200时,做处理?
?????????????????????*?得到服务器端返回json数据,并做处理?
?????????????????????*?*/?
????????????????????HttpResponse?httpResponse?=?httpClient.execute(httpPost);?
????????????????????StringBuilder?builder?=?new?StringBuilder();?
????????????????????BufferedReader?bufferedReader2?=?new?BufferedReader(?
????????????????????????????new?InputStreamReader(httpResponse.getEntity().getContent()));?
????????????????????String?str2?=?"";?
????????????????????for?(String?s?=?bufferedReader2.readLine();?s?!=?null;?s?=?bufferedReader2?
????????????????????????????.readLine())?{?
????????????????????????builder.append(s);?
????????????????????}?
????????????????????Log.i("cat",?">>>>>>"?+?builder.toString());?
????????????????????/**?
?????????????????????*?这里需要分析服务器回传的json格式数据,?
?????????????????????*/?
????????????????????JSONObject?jsonObject?=?new?JSONObject(builder.toString())?
????????????????????????????.getJSONObject("calendar");?
????????????????????JSONArray?jsonArray?=?jsonObject.getJSONArray("calendarlist");?
????????????????????for(int?i=0;i<jsonArray.length();i++){?
????????????????????????JSONObject?jsonObject2?=?(JSONObject)jsonArray.opt(i);?
????????????????????????CalendarInfo?calendarInfo?=?new?CalendarInfo();?
????????????????????????calendarInfo.setCalendar_id(jsonObject2.getString("calendar_id"));?
????????????????????????calendarInfo.setTitle(jsonObject2.getString("title"));?
????????????????????????calendarInfo.setCategory_name(jsonObject2.getString("category_name"));?
????????????????????????calendarInfo.setShowtime(jsonObject2.getString("showtime"));?
????????????????????????calendarInfo.setEndtime(jsonObject2.getString("endshowtime"));?
????????????????????????calendarInfo.setAllDay(jsonObject2.getBoolean("allDay"));?
????????????????????????calendarInfos.add(calendarInfo);?
????????????????????}
总结,普通形式的只需用JSONObject?,带数组形式的需要使用JSONArray?将其变成一个list。
from :http://blog.csdn.net/cwx01perfect/article/details/7559832