Java 如何在映射中存储多个值(在运行时)并再次获取单个值 Iterator searchGetResponseIterator=searchGetResponse.entrySet().Iterator(); objectobj=null; 对象数据选择器=null; while(searchGetResponseIterator.hasNext()){ Map.Entry searchGetResponseElement=(Map.Entry)searchGetResponseIterator.next(); if(searchGetResponseElement.getKey().equals(“seSearch”)){ obj=searchGetResponseElement.getValue(); } }
要在地图中存储Java 如何在映射中存储多个值(在运行时)并再次获取单个值 Iterator searchGetResponseIterator=searchGetResponse.entrySet().Iterator(); objectobj=null; 对象数据选择器=null; while(searchGetResponseIterator.hasNext()){ Map.Entry searchGetResponseElement=(Map.Entry)searchGetResponseIterator.next(); if(searchGetResponseElement.getKey().equals(“seSearch”)){ obj=searchGetResponseElement.getValue(); } },java,list,dictionary,automation,runtime,Java,List,Dictionary,Automation,Runtime,要在地图中存储“obj”。在obj中,我有这个>> {"columns":[{"exp":{"$ali":"t2acName"},"ali":"sourceacName"},"**id**":"4c99eedc836adbeefd0e10db76a","**table**":"public.4c99eedc836adbeefd0e10db76a","fieldIds":["0336e7c7-b236-41b7-8ae8-194dcfc49693","369bc4de-b220-41a2-a7be
“obj”
。在obj中,我有这个>>
{"columns":[{"exp":{"$ali":"t2acName"},"ali":"sourceacName"},"**id**":"4c99eedc836adbeefd0e10db76a","**table**":"public.4c99eedc836adbeefd0e10db76a","fieldIds":["0336e7c7-b236-41b7-8ae8-194dcfc49693","369bc4de-b220-41a2-a7be-090c6386aa2e","37926ca2-044f-44f2-a349-0f2e1b61f120","2310dcca-010f-4830-b300-01fb00d2d15e","306554be-92b3-41a3-bb24-b59f4adc8b79","21cdee98-e3b4-4da9-a502-587c0a221413","1f26c177-944f-4378-9e26-8ee0882221cc","13532fa7-8320-4cc1-90fb-aa8fcc3f5f6f","16d3a857-e8d5-4172-87f5-a149187ec409",],"executionQueue":[{"flow":0,"start":1574674632999,"count":0,"rEnd":1574676432999,"status":"done"},{"flow":0,"start":1574620200000,"count":0,"rEnd":1574674632999,"status":"done"}]}
我想再次从表中获取id和table。一种更简单的方法是将对象字符串转换为映射并获取字段
if(searchGetResponseElement.getKey().equals("seSearch")) {
obj = searchGetResponseElement.getValue();
ObjectMapper objectMapper = new ObjectMapper();
HashMap responseMap = objectMapper.readValue(obj.toString(), HashMap.class);
}
一旦有了响应映射
,就可以检查该对象并从中获取所需的层次结构
例如:((Map)((List)responseMap.get(“columns”).get(0)).get(“id”)
注意:
上述示例可能无法准确表示您的响应模型。您知道obj的格式
{"**id**":"4c99eedc836adbeefd0e10db76a","**table**":"public.
看起来在id出现的位置和table出现在字符串/json中的位置是一致的
查看RegexJava教程,创建一个用于提取id和表的教程
地图中存储了什么?字符串还是自定义类实例?在map中,我们以键和值格式存储响应体。在其中一个键中,我们获得的值与此obj中的值相同,因此现在我要获取id和表值。您需要使用
ObjectMapper
并将此响应字符串转换为映射并获取值。ObjectMapper类型中的方法readValue(JsonParser,Class)不适用于参数(Object,Class)您能否尝试使用objectMapper.readValue(obj.toString(),HashMap.class)
?请注意,OP的示例实际上不是一个有效的JSON