2014-02-24 44 views
1

我在下面有JSON響應,我想計算「ref_id」對象中字符串匹配的出現次數。但是我不知道在循環數組和計數匹配時從哪裏開始。任何幫助或建議,我應該在哪裏開始,將不勝感激在JSON數組中計數字符串的發生次數

{ 
"tag": "checkthisServer", 
"success": 1, 
"error": 0, 
"svd_ids": [ 
    { 
     "ref_id": "f91e2651" 
    }, 
    { 
     "ref_id": "f91e2651" 
    }, 
    { 
     "ref_id": "ue87sr5d" 
    }, 
    { 
     "ref_id": "f91e2651" 
    } 
    { 
     "ref_id": "ue87sr5d" 
    } 
] 
} 

輸出應該是:

f91e2651: 3 
ue87sr5d: 2 
+2

查找JSONArray。循環並將初始結果放在Hashmap中。如果ref_id已經在Hahsmap中,然後增加值。 –

回答

3

您可以使用ArrayList中做Collections.frequency它。因此首先從JSONObeject獲取JSONArray,然後將其轉換爲ArrayList:

JSONObject mainobj=new JSONObject("your json string"); 
// get svd_ids JSONArray 
JSONArray json_array=mainobj.getJSONArray("svd_ids"); 

// get ArrayList from JSONArray 

    ArrayList<String> listsvd_ids = new ArrayList<String>(); 
    for (int i=0;i<json_array.length();i++){ 
    listsvd_ids.add(json_array.get(i).toString()); 
    } 

// occurrence of f91e2651 
int occur_f91e2651 = Collections.frequency(listsvd_ids, "f91e2651"); 
// occurrence of ue87sr5d 
int occur_ue87sr5d = Collections.frequency(listsvd_ids, "ue87sr5d"); 
//..... 
-1

試試這個,

JSONArray responseArray = jsonObject.getJSONArray("svd_ids"); 
int countFirst = 0, countSecond = 0; 

for (int i = 0; i < responseArray.length(); i++) { 
    JSONObject obj = responseArray.getJSONObject(i); 
    if (obj.optString("ref_id").equals("f91e2651") { 
     countFirst = countFirst + 1; 
    } 
    if (obj.optString("ref_id").equals("ue87sr5d") { 
     countSecond = countSecond + 1; 
    } 
} 
相關問題