【问题标题】:Access hash values in java to create objects在java中访问哈希值以创建对象
【发布时间】: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


    【解决方案1】:

    会是这样的:

    for (i=0; i < query_pairs.get("firstname").size(); i++) {
    
        l.add(new Person(query_pairs.get("firstname").get(i), query_pairs.get("lasttname").get(i), query_pairs.get("age").get(i));
    
    }
    

    【讨论】:

    • 我在 query_pairs.get("firstname").size() 中收到错误“Type mysmatch,无法从 int 转换为 boolean”
    • 谢谢,但现在我得到了 NullPointerException
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-06
    • 1970-01-01
    • 1970-01-01
    • 2013-03-22
    • 2014-04-09
    • 1970-01-01
    • 2021-06-23
    相关资源
    最近更新 更多