2015-05-11 22 views
0

迭代一個List >值我有這樣 用java

{ 
    "queryPath": "/api/", 
    "nId": "f084f5ad24fcfaa9e9faea0", 
    "statusCode": 707 
    "statusMessage": "Success", 
    "results": { 
    "data": [ 
     { 
     "id": "10248522500798", 
     "capabilities": [ 
      "men", 
      "women" 
     ], 
     "name": "errt2" 
     }, 
     { 
     "id": "418143778", 
     "capabilities": [ 
      "dog", 
      "cat" 
     ], 
     "name": "Livin" 
     } 
    ] 
    } 
} 

這裏的JSON響應我加入results.data到列表如下

private List<HashMap<String, String>> episodes = new ArrayList<HashMap<String, String>>(); 
    episodes =helper.getJSONValue(response, "results.data"); 



    public <T>T getJSONValue(Response res, String path){ 
     String json = res.asString(); 
     JsonPath jpath = new JsonPath(json); 
     return jpath.get(path); 
    } 

這樣的情節包含所有數據我的意思是所有results.data 雖然我調試得到這種方式

[{id=10248522500798, name=errt2, capabilities=[men, women]}, {id=418143778, name=Livin, capabilities=[dog, cat]}] 

這裏我有能力[men, women][dog, cat]。我需要檢查的能力包含mendog. 我該怎麼做?

+0

你爲什麼需要'List >'? –

+0

然後它是如何做到的.am新的java.please爲我提供了一個簡單的解決方案 – saathu

+0

actulayy該方法getJSONValue是一個常見的一個..數據庫我正在使用像這樣...所以我必須像這樣使用List > – saathu

回答

1

如果我是你,我還沒有這樣做.. 使用gson並將你的json映射到java模型中。它更好。之後,您可以使用getter和setter訪問所有模型零件。

MyType target2 = gson.fromJson(json, MyType.class); // deserializes json into target2 

正如你看到它是非常簡單:)

但是,如果你想要遍歷包含地圖,你可以使用下面的代碼塊列表:

List<Map<String, String>> test = new ArrayList<Map<String, String>>(); 
     for(Map<String, String> map : test){ 
      for(Entry<String, String> entry : map.entrySet()){ 
       System.out.println(entry.getKey() + " : " + entry.getValue()); 
      } 
     } 

看上面的代碼可以獲取所有條目的鍵和值並檢查它們。

編輯:

你必須在那之後你的列表改爲List<Map<String,Object>>

List<Map<String, Object>> test = new ArrayList<Map<String, Object>>(); 
     for(Map<String, Object> map : test){ 
      for(Entry<String, Object> entry : map.entrySet()){ 
       if(entry.getKey().equalsIgnoreCase("capabilities")){ 
        List<String> myCapabilities = (List)entry.getValue(); 
        if(myCapabilities.contains("dog") && myCapabilities.contains("cat")){ 
         // BLA BLA 
        } 
       } 
      } 
     } 

這是一個討厭的方式。我建議你使用GSON ..

+0

這個代碼將檢查能力陣列[男人,女人]和[狗,貓]值與另一個值例如男性) – saathu

+0

我已編輯我的答案,請再次參閱 –

+0

如果它有幫助,請接受爲幫助其他人的答案,謝謝。 –