• 在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。

  • 相关阅读:
    C#递归拷贝文件夹下文件以及文件夹
    C# 获取文件名、目录、后缀、无后缀文件名、扩展名
    C#递归得到特定文件夹下问件
    Are you seeing high number of busyio or busyworker threads in the timeout exception?
    减少查询中的资源使用
    SQL性能优化前期准备-清除缓存、开启IO统计
    Sql server 存储过程批量插入若干数据。
    python读取excel中单元格的内容返回的5种类型
    Python读取excel数据类型处理
    【转】 如何导入excel数据到数据库,并解决导入时间格式问题
  • 原文地址:https://www.cnblogs.com/zhoujian315/p/3129279.html
Copyright © 2020-2023  润新知