2012-06-18 41 views
0

我已经使用下面的代码将字符串转换为json并解析它。在android中读取嵌套的json字符串

String sb= {"meta": {"limit": 20, "next": null, "offset": 0, "previous": null, "total_count": 1}, "objects": [{"api_key": "c87391754b522d0c83b2c8b5e4c8cfd614559632deee70fdf1b48d470307e40e", "homeAddress": "kathmandu", "resource_uri": "/api/ca/entry/1/", "username": "sumit"}]} 
    try { 

        JSONObject jsonObject = new JSONObject(sb); 
        JSONObject object = jsonObject.getJSONObject("objects"); 
        String api_key= object.getString("api_key"); 
        Toast.makeText(HelloWorldActivity.this, api_key, Toast.LENGTH_SHORT).show(); 

     } catch (JSONException e) { 
          e.printStackTrace(); 
          } 

下面的一些教程我试图解析json,但我无法解析它。例如:我想回到API_KEY作为c87391754b522d0c83b2c8b5e4c8cfd614559632deee70fdf1b48d470307e40e

,我在上面的代码中

+0

看看这个答案:http://stackoverflow.com/questions/10947065/json-parsing-in-android-no-value-for-x-error/10947108#10947108 – ariefbayu

回答

2

始终使用JSONLint或类似的网站以及格式化JSON误以为任何事情。

你JSON是这样

{ 
    "meta": { 
     "limit": 20, 
     "next": null, 
     "offset": 0, 
     "previous": null, 
     "total_count": 1 
    }, 
    "objects": [ 
     { 
      "api_key": "c87391754b522d0c83b2c8b5e4c8cfd614559632deee70fdf1b48d470307e40e", 
      "homeAddress": "kathmandu", 
      "resource_uri": "/api/ca/entry/1/", 
      "username": "sumit" 
     } 
    ] 
} 

这里的 “对象” 将返回数组不会反对。

将您的代码更改为以下。

try { 

      JSONObject jsonObject = new JSONObject(sb); 
      JSONArray array = jsonObject.getJSONArray("objects"); 

      String key = array.getJSONObject(0).getString("api_key"); 
      String uname = array.getJSONObject(0).getString("username"); 
      Toast.makeText(HelloWorldActivity.this, username + " " + key, 
        Toast.LENGTH_SHORT).show(); 

     } catch (JSONException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
相关问题