2017-05-31 57 views
-4

我有一個JSON文件如何使用Android中的HASH MAP從JSON文件中獲取特定值?

{ 
    "msg": "ACTIVITY DATA found", 
    "data": { 
    "USTUDENT8": 0, 
    "USTUDENT7": 0, 
    "USTUDENT6": 0, 
    "USTUDENT5": 0, 
    "USTUDENT4": 0, 
    "USTUDENT3": 0, 
    "USTUDENT2": 0, 
    "UTEACHER": 0, 
    "EVERYONE": 2 
    } 
} 

從這個我需要得到每個人的價值,尤其是。

@Override 
public void response(JSONObject jsonObject) throws JSONException { 

    List<String> allNames = new ArrayList<String>(); 

    JSONArray arrayObject = jsonObject.getJSONArray("data"); 
    for (int i = 0; i < arrayObject.length(); i++) { 
     JSONObject dataObject = arrayObject.getJSONObject(i); 
     message = dataObject.getString("EVERYONE"); 
     allNames.add(message); 
     Log.d("Message", message); 
    } 
} 
+2

您的數據JSON響應JSONObject的不jsonarray。 –

+0

你從「數據」得到的數據是json對象不是它是json數組,你必須改變到json數組 –

回答

0

試試下面的代碼

JSONObject arrayObject = jsonObject.getJSONObject("data"); 
message = arrayObject.getString("EVERYONE"); 
allNames.add(message); 
Log.d("Message", message); 
+0

'jsonObject.getJSONObject' –

2

試試這個

@Override 
public void response(JSONObject jsonObject) throws JSONException { 

    List<String> allNames = new ArrayList<String>(); 

     try { 
      JSONObject data = jsonObject.getJSONObject("data"); 
      message = data.getString("EVERYONE"); 
      allNames.add(message); 

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

感謝其工作正常 –

+0

歡迎,請接受我的答案。 –

+0

如果它是一個數組對象,你能解釋一下嗎?如何獲得它適用? –

0

你試圖讓 '數據' 使用jsonObject.getJSONArray("data"),這是完全錯誤的JSONObject。使用jsonObject.getJSONObject("data")來獲取'數據'JSONObject

2.作爲EVERYONE值是integer值,使用dataObject.getInt("EVERYONE")代替dataObject.getString("EVERYONE")得到的EVERYONE值。

更新您的代碼如下:

......... 
    ................ 

    List<String> allNames = new ArrayList<String>(); 

    try { 
     JSONObject jsonObject = new JSONObject(result); 
     JSONObject dataObject = jsonObject.getJSONObject("data"); 

     int everyone = dataObject.getInt("EVERYONE"); 

     Log.d("SUCCESS", "EVERYONE: " + everyone); 

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

    ....... 
    ................... 

OUTPUT:

D/SUCCESS: EVERYONE: 2 

希望這有助於〜

相關問題