Map

gaoyingchao7788 2010-02-01 09:56:16
Map<String,Object> arg
StringBuffer s = new StringBuffer();
String sep = "";
for (String k : arg.keySet()) {
Object v = arg.get(k);
k = urlencode(k);
if(v.getClass().isAssignableFrom(Map.class)) {
String s2 = "";
String sep2 = "";
for(String k2 : ((Map<String,Object>)v).keySet() ){
Object v2 = ((Map<String,Object>)v).get(k2);
k2 = urlencode(k2);
s2 += sep2+k+"["+k2+"]="+String.valueOf( v2 );
sep2 = "&";
}
s.append(sep).append(s2);
} else {
s.append(sep).append(k).append("=").append(String.valueOf(v));
}
sep = "&";
}
...全文
94 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
mrt_chen 2011-05-31
  • 打赏
  • 举报
回复
代码写的很烦!
gaoyingchao7788 2010-02-01
  • 打赏
  • 举报
回复
谢谢啦
sky3785 2010-02-01
  • 打赏
  • 举报
回复

Map <String,Object> arg;
StringBuffer s = new StringBuffer();
String sep = "";
for (String k : arg.keySet()) {//循环arg里的数据
Object v = arg.get(k);//得到具体某个value
k = urlencode(k);
if(v.getClass().isAssignableFrom(Map.class)) { //如果value值类型为Map
String s2 = "";
String sep2 = "";
for(String k2 : ((Map <String,Object>)v).keySet() ){//再循环类型为Map的value
Object v2 = ((Map <String,Object>)v).get(k2);
k2 = urlencode(k2);
s2 += sep2+k+"["+k2+"]="+String.valueOf( v2 );
sep2 = "&";
}
s.append(sep).append(s2); //key1[key11}=value11&key1[key12]=value12
} else {
s.append(sep).append(k).append("=").append(String.valueOf(v));//key2=value2
}
sep = "&";
}
}


最后生成刑如:key1[key11}=value11&key1[key12]=value12&key2=value2
主要是用来分析url后面的参数的
mayuanfei 2010-02-01
  • 打赏
  • 举报
回复
感觉if(v.getClass().isAssignableFrom(Map.class)) 这句
应该改成if (Map.class.isAssignableFrom(v.getClass()))
前面的类是后面类的父类或接口都返回True这样比较合理。
假设数据是:

Map<String, Object> arg = new HashMap<String, Object>();
Map<String, Object> arg1 = new HashMap<String, Object>();
arg1.put("cc", "33");
arg1.put("dd", "44");
arg.put("aa", 11);
arg.put("bb", 22);
arg.put("arg1", arg1);

输出为:

arg1[dd]=44&arg1[cc]=33&aa=11&bb=22
qianzhimeiying 2010-02-01
  • 打赏
  • 举报
回复
总体上来说是个转换url的方法,附带一些参数
Map <String,Object> arg // 参数映射
StringBuffer s = new StringBuffer();
String sep = "";
for (String k : arg.keySet()) { //对映射里的每一个key,
Object v = arg.get(k); //取映射里的key对应的value
k = urlencode(k); //转码
if(v.getClass().isAssignableFrom(Map.class)) { //如果取出来的value还是一个映射map,则嵌套遍历取value,每个arg之间用&分割,最后得到形状如username=kkk&password=lll这样的url
String s2 = "";
String sep2 = "";
for(String k2 : ((Map <String,Object>)v).keySet() ){
Object v2 = ((Map <String,Object>)v).get(k2);
k2 = urlencode(k2);
s2 += sep2+k+"["+k2+"]="+String.valueOf( v2 );
sep2 = "&";
}
s.append(sep).append(s2);
} else {
s.append(sep).append(k).append("=").append(String.valueOf(v));
}
sep = "&";
}
mayuanfei 2010-02-01
  • 打赏
  • 举报
回复
就是把Map中保存的数据以
aa=11&bb=22这种形式输出
gaoyingchao7788 2010-02-01
  • 打赏
  • 举报
回复
帮我看一下,结果是什么?我看不懂,很重要,帮帮忙

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧