我有一个像这样的 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);
}
所以剧集包含所有数据,我的意思是所有结果。数据 当我调试时我会这样
[{id=10248522500798, name=errt2, capabilities=[men, women]}, {id=418143778, name=Livin, capabilities=[dog, cat]}]
这里我有能力[男人,女人]
和[狗,猫]
。我需要检查能力包含男人
或狗。
我怎样才能做到这一点?
最佳答案
如果我是你,我就不会这样做.. 使用gson并将您的 json 映射到 java 模型中。好多了。之后,您可以使用 getter 和 setter 访问所有模型部件。
MyType target2 = gson.fromJson(json, MyType.class); // deserializes json into target2
如您所见,这非常简单:)
但是如果您想迭代包含 map 的列表,您可以使用下面的代码块:
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..
关于java - 使用 java 迭代 List<HashMap<String, String>> 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30165274/