关闭

android中json数据解析详解

标签: androidandroid开发json数据
117人阅读 评论(0) 收藏 举报

需要解析的json数据如下:

{

    "head": {                        //这是一个JSONObject,里面存放需要的相关信息


        "code": "0",               //这是一个键值对,里面存放需要的值(主要取里面的值来使用)


    },
    "body": {                      //这同样是一个JSONObject,里面存放需要的相关信息
        "List": [                    //这是一个JSONArray
            {
                "测试数据": "测试数据"   //这是一个键值对,里面存放需要的值(主要取里面的值来使用)
            },
            {
                "测试数据": "测试数据"   //这是一个键值对,里面存放需要的值(主要取里面的值来使用)
            }
        ]
    }

}

下面用解析上面的json数据:

HttpPost httpRequestLogin = new HttpPost(url); //url是请求json数据的地址

try {

// 发出HTTP request

httpRequestLogin.setEntity(new StringEntity(jsonObjectLogin.toString(), HTTP.UTF_8));   //jsonObjectLogin.toString()是发出请求的json数据

// 取得HTTP response

HttpResponse httpResponse1 = new DefaultHttpClient().execute(httpRequestLogin);

  // 若状态码为200 ok

if (httpResponse1.getStatusLine().getStatusCode() == 200) {

// 取出回应字串,返回的所有信息,均存放在该字符串中

String strResultLogin = EntityUtils.toString(httpResponse1.getEntity());

// 整体的数据是个jsonobject对象,将字符串转化成jsonObjectLogin.toString()

JSONObject object = new JSONObject(strResultLogin);

// 取得head的值,值是个JSONObject对象

JSONObject head = object.getJSONObject("head");

String code = head.getString("code");   //在JSONObject类型的head下用getString方法取出,“code”对应的值,放入String中

// 取得body的值,值是个JSONObject对象

JSONObject body = object.getJSONObject("body");

  //在JSONObject类型的body下用getJSONObject方法取出,“List”对应的JSONArray值,放入JSONArray中

JSONArray List = body.getJSONArray("List");

for (int i = 0; i < List.length(); i++) {    //取出JSONArray之后,利用循环逐个出去数组里面的值

JSONObject object2 = List.getJSONObject(i);

String 测试数据 = object2.getString("测试数据");

}else{

}

catch (ClientProtocolException e) {

e.printStackTrace();

catch (UnsupportedEncodingException e) {

e.printStackTrace();

catch (IOException e) {

e.printStackTrace();

catch (JSONException e) {

e.printStackTrace();

}

以上为一般json的解析,在复杂的json,可能也许就是JSONArray里面嵌套JSONArray,那样的话,可以顺着上面的思想,在循环中在嵌套一个循环,逐层取出即可!
1
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:2745次
    • 积分:133
    • 等级:
    • 排名:千里之外
    • 原创:10篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章存档