java-无法将查询返回的对象映射到正确定义的类

java-无法将查询返回的对象映射到正确定义的类,java,class,hashmap,Java,Class,Hashmap,我有一个要求,其中一些数据必须通过连接到API来获得 我已经使用以下代码将查询返回的对象映射到hashmap-- 现在我尝试将响应(在对象中)映射到以下类--- 另外,现在我修改了用于显示数据的代码,如下所示-- 我做错了什么?如何正确转换响应,以便正确提取4个值中的每一个值?根据打印的内容和得到的错误,查询结果是Map(或者Map,如果数字存储为字符串) 地图只有一个键:“获取所有单词\u流行度”。关联的值包含4个键:“关键字限制”,“超时限制”,“每次呼叫的成本”,“结果限制” 因此,您的代

我有一个要求,其中一些数据必须通过连接到API来获得

我已经使用以下代码将查询返回的对象映射到hashmap--

现在我尝试将响应(在对象中)映射到以下类---

另外,现在我修改了用于显示数据的代码,如下所示--


我做错了什么?如何正确转换响应,以便正确提取4个值中的每一个值?

根据打印的内容和得到的错误,查询结果是
Map
(或者
Map
,如果数字存储为字符串)

地图只有一个键:
“获取所有单词\u流行度”
。关联的值包含4个键:
“关键字限制”
“超时限制”
“每次呼叫的成本”
“结果限制”

因此,您的代码应该如下所示:

untypedResult = wt.queryPermissions();
resp.getWriter().println(" Response for QueryPermissions----");
if("No Error".equals(wt.errormsg)) {   
    Map<String, Map<String, Integer> hMap = 
        (Map<String, Map<String, Integer>) untypedResult;

    for (Map.Entry<String, Map<String, Integer>> me : hMap.entrySet()) {
        Map<String, Integer> value = me.getValue();
        WtQueryPerm perm = new WtQueryPerm(value.get("keyphrase_limit"),
                                           value.get("timeout_limit"),
                                           value.get("cost_per_call"),
                                           value.get("result_limit"));
        resp.getWriter().println(me.getKey() 
                                 + " :  Cost per call=" + perm.getCostPerCall() 
                                 + ", Keyphrase limit=" + perm.getKeyphraseLimit() 
                                 + ", Result limit=" + perm.getResultLimit() 
                                 + ", Timeout limit=" +  perm.getTimeoutLimit());

    }
}
untypedResult=wt.queryPermissions();
resp.getWriter().println(“QueryPermission的响应----”;
如果(“无错误”。等于(wt.errormsg)){

Map看起来像是要从HashMap填充Bean。雅加达的Beanutils提供了这方面的帮助程序

wt_queryperm_class bean=new wt_queryperm_class();
BeanUtils.populate(bean, hmap);

谢谢,你的回答很有启发性!
public class wt_queryperm_class {

public Integer keyphrase_limit;
public Integer timeout_limit;
public Integer cost_per_call;
public Integer result_limit;


}
    //declare new object to store result of QueryPermissions
        wt_queryperm_class a;

    untypedResult=wt.QueryPermissions();
        resp.getWriter().println(" Response for QueryPermissions----");
        if(wt.errormsg=="No Error")
        {   
            hMap = (HashMap<String, Integer>) untypedResult;

            Set set = hMap.entrySet();

            Iterator i = set.iterator();

            while(i.hasNext()){
              Map.Entry me = (Map.Entry)i.next();
              a= (wt_queryperm_class)(me.getValue());
              resp.getWriter().println(me.getKey() + " :  Cost per call=" + a.cost_per_call + "Keyphrase limit=" + a.keyphrase_limit + " Result limit=" + a.result_limit +" Timeout limit=" +  a.timeout_limit );
            }
Problem accessing /keywords_trial_application. Reason:

java.util.HashMap cannot be cast to com.taurusseo.keywords.wt_queryperm_class
Caused by:

java.lang.ClassCastException: java.util.HashMap cannot be cast to com.taurusseo.keywords.wt_queryperm_class
untypedResult = wt.queryPermissions();
resp.getWriter().println(" Response for QueryPermissions----");
if("No Error".equals(wt.errormsg)) {   
    Map<String, Map<String, Integer> hMap = 
        (Map<String, Map<String, Integer>) untypedResult;

    for (Map.Entry<String, Map<String, Integer>> me : hMap.entrySet()) {
        Map<String, Integer> value = me.getValue();
        WtQueryPerm perm = new WtQueryPerm(value.get("keyphrase_limit"),
                                           value.get("timeout_limit"),
                                           value.get("cost_per_call"),
                                           value.get("result_limit"));
        resp.getWriter().println(me.getKey() 
                                 + " :  Cost per call=" + perm.getCostPerCall() 
                                 + ", Keyphrase limit=" + perm.getKeyphraseLimit() 
                                 + ", Result limit=" + perm.getResultLimit() 
                                 + ", Timeout limit=" +  perm.getTimeoutLimit());

    }
}
wt_queryperm_class bean=new wt_queryperm_class();
BeanUtils.populate(bean, hmap);