zoukankan      html  css  js  c++  java
  • 在 Android 中解析 JSON 数据

    原文地址:http://my.eoe.cn/iceskysl/archive/19629.html?f=nge

    在 Android 中解析JSON很方便,但是 JSON 的格式或者层级各有不同,搞的有人好像就是不能入门,那我就简单写下~

    标准的 json 格式一般是这样的

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    { "background" : "true",
      "expires" : "3600000",
      "items" : [{ 
    "author" : "vincent4j",
    "created_at" : "2013-05-05T13:14:38+08:00",
    "id" : 512},
    { 
    "author" : "vincent4j",
    "created_at" : "2013-05-05T13:14:38+08:00",
    "id" : 512}]
    }
    

    那么其最外层的是个 {} ,也就是其是个 JSON 对象,直接转成JSONObject,再看 items 这个下面是个 [] ,也就是个数组,那么直接getJSONArray就可以得到了,代码如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    JSONObject josnObject = new JSONObject(str);
    JSONArray array = josnObject.getJSONArray("items");
    
    int length = array.length();
    for (int i = 0; i < length; i++) {
      JSONObject object = array.getJSONObject(i);
      //Do your code
       Log.v("json object", object.getString("id"));
    }
    

    上面这个是最常见的格式了,但是有的时候你会遇到这样的 json 格式

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    { "response" : { "items" : [ { "detail_url" : "http://api.eoe.cn/client/blog?k=show&id=3348",
                "head_image_url" : "http://www.eoeandroid.com/uc_server/avatar.php?uid=739935&size=small",
                "id" : "3348",
                "name" : "过期的白砂糖",
                "short_content" : "GitHub上最火的40个Android开源项目(一)GitHub上最...",
                "time" : "1367809230",
                "title" : "GitHub上最火的40个Android开源项目(一)"
              },
              { "detail_url" : "http://api.eoe.cn/client/blog?k=show&id=18229",
                "head_image_url" : "http://www.eoeandroid.com/uc_server/avatar.php?uid=2&size=small",
                "id" : "18229",
                "name" : "iceskysl",
                "short_content" : "OS X Mavericks新功能介绍: https://help.apple.com/o...",
                "time" : "1382471844",
                "title" : "修改DNS大幅提高OS X Mavericks(5.29G)升级下载速度(4.1M/s)"
              }]
    }
    
    }
    

    看到区别了没,多了一层,那我们就可以这样来调

    1
    2
    3
    4
    5
    6
    7
    8
    9
    JSONObject josnObject = new JSONObject(str);
    JSONObject responseObject = josnObject.getJSONObject("response");
    JSONArray array = responseObject.getJSONArray("items");
    int length = array.length();
    for (int i = 0; i < length; i++) {
      JSONObject object = array.getJSONObject(i);
      //Do your code
       Log.v("json object", object.getString("id"));
    }
    

    总结一句话:

    获取节点内容的时候,遇到{}就getJSONObject,遇到[]就getJSONArray~

  • 相关阅读:
    sharepoint权限操作(记录以备忘)
    python-----利用filecmp删除重复文件
    python-----自动解压并删除zip文件
    python-----文件自动归类
    python-----模糊搜索文件
    python-----查看显卡gpu信息
    python-----判断文件是否存在
    git 查看、切换用户
    PyCharm创建文件时自动添加头文件
    python-----监控博客园积分动态,有变化发邮件通知
  • 原文地址:https://www.cnblogs.com/scud001/p/3456845.html
Copyright © 2011-2022 走看看