java-如何使用hashmaps作为响应数据=一个关键短语的结构,每个关键短语具有原始关键短语的单个项目列表

时间:2011-11-06 05:00:00

标签: java hashmap

我正在尝试通过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部分)...但我对如何去做这个很困惑......任何帮助都会受到赞赏。

1 个答案:

答案 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