zoukankan      html  css  js  c++  java
  • android 解析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。
  • 相关阅读:
    LeetCode(287)Find the Duplicate Number
    LeetCode(290) Word Pattern
    LeetCode(205)Isomorphic Strings
    LeetCode(201) Bitwise AND of Numbers Range
    LeetCode(200) Number of Islands
    LeetCode(220) Contains Duplicate III
    LeetCode(219) Contains Duplicate II
    命令行执行Qt程序
    LeetCode(228) Summary Ranges
    redis 的安装和使用记录
  • 原文地址:https://www.cnblogs.com/tt_mc/p/1925327.html
Copyright © 2011-2022 走看看