【发布时间】:2016-08-20 16:53:15
【问题描述】:
我从这样的 URL 获取参数
http://localhost:8080/Server/file?fileid=34&userid=admin&token=rdfcgvhb34567DFGHJK&firstname=alex&lastname=ozouf&age=33&firstname=kevin&lastname=gerfild&age=27
我通过@QueryParam(fileid) 获取 fieid、userid 和令牌值... 然后我不知道URL中有多少参数,所以我通过
获取其余的其余值@Context UriInfo uriInfo
String query = uriInfo.getRequestUri().getQuery().toLowerCase();
final Map<String, List<String>> query_pairs = new LinkedHashMap<String, List<String>>();
final String[] pairs = query.split("&");
for (String pair : pairs) {
final int idx = pair.indexOf("=");
final String key = idx > 0 ? URLDecoder.decode(pair.substring(0, idx), "UTF-8") : pair;
if (!query_pairs.containsKey(key)) {
query_pairs.put(key, new LinkedList<String>());
}
final String value = idx > 0 && pair.length() > idx + 1 ? URLDecoder.decode(pair.substring(idx + 1), "UTF-8") : null;
query_pairs.get(key).add(value);
}
System.out.println(query_pairs);
结果是这样的
{fileid=[34], userid=[admin], token=[rdfcgvhb34567dfghjk], firstname=[alex, kevin], lastname=[ozouf, gerfild], age=[33, 27]}
我已经有了fileid、userid、toekn 参数。现在我想创建一个包含其余参数实例的数组。我有一个类 Person,它有名字、姓氏和年龄作为属性。我想做类似的事情
List<Person> l = new ArrayList<>();
for (i=0, **every item in query_pairs**)
l.add(new Person(firstname[i], lastname[i], age[i]));
如何获取“query_pairs 中的每个项目”以及如何访问 firstname[i] 等值?
【问题讨论】:
标签: java arrays string list hashmap