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