当前位置: 代码迷 >> JavaScript >> JSONObject 解析json的步骤
  详细解决方案

JSONObject 解析json的步骤

热度:811   发布时间:2013-03-21 10:08:17.0
JSONObject 解析json的方法

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

  相关解决方案