2014-05-01 173 views
-2

我试图解析此JSON:解析JSON阵列

[{ 
    "codError": 0, 
    "msg": "OK" 
}, { 
    "id": 1, 
    "role": { 
     "id": 4, 
     "name": "Super", 
     "description": "Roling.", 
     "rights": [], 
     "superuser": true, 
     "active": true, 
     "optimisticLock": 0 
    }, 
    "now": null, 
    "points": [], 
    "firstName": null, 
    "lastName": null, 
    "loginName": "admin", 
    "password": null, 
    "connected": true, 
    "active": true, 
    "optimisticLock": null 
}, 
["U4"] 

] 

我不能让角色ID和登录名的值,我的代码是在这里:

private static final String TAG_ROLE = "role"; 
private static final String TAG_ID = "id"; 

String jsonStr = sh.makeServiceCall(url, ServiceHandler.GET); 

      Log.d("Response: ", "> " + jsonStr); 

      if (jsonStr != null) { 
       try { 


        JSONArray jsonarr =new JSONArray(jsonStr); 

        JSONObject jobj=jsonarr.getJSONObject(1); 
        JSONObject role =jobj.getJSONObject(TAG_ROLE); 
        String role_id = role.getString(TAG_ID); 



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

调试我应用和字符串role_id没有任何价值,代码的问题是什么?谢谢

+2

同样的问题! http://stackoverflow.com/questions/23405108/parsing-json-with-android – vjdhama

+0

一旦检查TAG_ROLE和TAG_ID,然后使用getInt而不是getString。 –

+0

yes是同一个问题,因为仍然不能正常工作,tag_role和Tag_id都可以 – Igor

回答

0
JSONArray array; 
array = new JSONArray(jsonStr); 
JSONObject obj = array.getJSONObject(1); 
JSONObject obj2 = obj.getJSONObject("role"); 
int id = obj2.getInt("id"); 
String name = obj2.getString("name"); 

如果你没有得到任何值,你可能想检查响应是否如你所期望的那样。另外,检查TAG_ROLE,TAG_ID的值。

编辑1:再次

String jsonStr = "[{\n \"codError\": 0,\n \"msg\": \"OK\"\n}, {\n \"id\": 1,\n \"role\": {\n  \"id\": 4,\n  \"name\": \"Super\",\n  \"description\": \"Roling.\",\n  \"rights\": [],\n  \"superuser\": true,\n  \"active\": true,\n  \"optimisticLock\": 0\n },\n \"now\": null,\n \"points\": [],\n \"firstName\": null,\n \"lastName\": null,\n \"loginName\": \"admin\",\n \"password\": null,\n \"connected\": true,\n \"active\": true,\n \"optimisticLock\": null\n},\n[\"U4\"]\n\n]"; 

try { 
     JSONArray array; 
     array = new JSONArray(jsonStr); 
     JSONObject obj = array.getJSONObject(1); 
     JSONObject obj2 = obj.getJSONObject("role"); 
     int id = obj2.getInt("id"); 
     String name = obj2.getString("name"); 
     System.out.println(id); 
     System.out.println(name); 
    } catch (JSONException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
+0

工作谢谢,抱歉,但我已经复制你的代码,但仍然无法工作 – Igor

+0

已编辑的代码。问题可能出在“id”:4,其中4是一个整数,而不是一个String。在你之前的问题中没有人注意到这一点:-) –

+0

非常感谢你,现在我得到了id,但我得到了1,它必须是4,我也没有得到loginName,要得到loginName它会是这样的?字符串loginname = obj.getString(“loginName”);?谢谢你这么多 – Igor