zoukankan      html  css  js  c++  java
  • 在android中解析json数据格式字符串

    在这里分两种情况讲解在android中解决json数据格式字符串:一种是普通的,一种是带有数组形式的。

    普通形式的:
    假设服务器端返回的json数据格式如下:
    {
      "userbean": {
        "Uid": "100196",
        "Showname": "疯狂的猴子",
        "Avtar": null,
        "State": 1
      }
    }

    解析代码如下:

    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": "(亲子)ddssd",
            "category_name": "默认分类",
            "showtime": "1288927800",
            "endshowtime": "1288931400",
            "allDay": false
          },
          {
            "calendar_id": "1706",
            "title": "(旅行)",
            "category_name": "默认分类",
            "showtime": "1288933200",
            "endshowtime": "1288936800",
            "allDay": false
          }
        ]
      }
    }
    解析代码如下:

    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。

  • 相关阅读:
    UITextField最大字符数和最大字节数的限制
    Python profiling
    Glow Android 优化实践
    当 NSDictionary 遇见 nil
    TCP/IP详解2 学习笔记---mbuf
    行业代码获取最近代码
    词语、句子相似度比较
    从word得到表格数据插入数据库(6位行业代码)
    python遍历数组获取下标
    计算机浮点数表示
  • 原文地址:https://www.cnblogs.com/zhoujian315/p/3129279.html
Copyright © 2011-2022 走看看