我正在尝试通过XML RPC调用连接到一个API,该API将短语列表作为输入,并作为输出 - “回显一个关键短语结构,每个关键短语包含原始关键短语的单个项目列表。”
我试图以下列方式使用常规hashmap解析代码 -
hMap = (HashMap<String, Integer>) untypedResult;
Set set = hMap.entrySet();
Iterator i = set.iterator();
while(i.hasNext()){
Map.Entry me = (Map.Entry)i.next();
resp.getWriter().println(me.getKey() + " : " + me.getValue() );
}
我得到的输出如下 -
GetThesaurusKeyPhrases的响应---- mp3:[Ljava.lang.Object; @ 76c3358b 布兰妮斯皮尔斯:[Ljava.lang.Object; @ 9f07597
如何正确获取值?我认为我应该正确解析每个值(me.getvalue部分)...但我对如何去做这个很困惑......任何帮助都会受到赞赏。
答案 0 :(得分:1)
您可能需要投射每个键和值,即(String)me.getKey()
并查看您获得的内容。
在您发布的代码段中,您的演员阵容中的HashMap<String, Integer>
可能不正确。由于您的变量名称为HashMap
,因此原始HashMap可能只被定义为HashMap<Object, Object>
或untypedResult
。我尝试了以下内容,它按预期工作:
<!-- language: lang-java -->
public static void main(String[] args) {
HashMap<String, Integer> hMap = new HashMap<String, Integer>();
hMap.put("Hi1", new Integer(1));
hMap.put("Hi2", new Integer(2));
hMap.put("Hi3", new Integer(3));
hMap.put("Hi4", new Integer(4));
Set set = hMap.entrySet();
Iterator i = set.iterator();
while(i.hasNext()){
Map.Entry me = (Map.Entry)i.next();
System.out.println(me.getKey().getClass().getName() + " : " + me.getValue().getClass().getName() );
System.out.println(me.getKey() + " : " + me.getValue() );
}
}
此块的输出为:
java.lang.String : java.lang.Integer
Hi2 : 2
java.lang.String : java.lang.Integer
Hi1 : 1
java.lang.String : java.lang.Integer
Hi4 : 4
java.lang.String : java.lang.Integer
Hi3 : 3