[英]iterate a List<HashMap<String, String>> values using java
我有一個像這樣的json響應
{
"queryPath": "/api/",
"nId": "f084f5ad24fcfaa9e9faea0",
"statusCode": 707
"statusMessage": "Success",
"results": {
"data": [
{
"id": "10248522500798",
"capabilities": [
"men",
"women"
],
"name": "errt2"
},
{
"id": "418143778",
"capabilities": [
"dog",
"cat"
],
"name": "Livin"
}
]
}
}
這里是將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);
}
因此劇集包含所有數據,我指的是所有result.data。
[{id=10248522500798, name=errt2, capabilities=[men, women]}, {id=418143778, name=Livin, capabilities=[dog, cat]}]
在這里,我具有[men, women]
和[dog, cat]
能力。我需要檢查是否包含men
或dog.
能力dog.
我怎樣才能做到這一點?
如果我是你,我還沒有做到這一點。使用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更改為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 ..
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.