将HTTP样式的键值对解析为java.util.HashMap

将HTTP样式的键值对解析为java.util.HashMap,java,android,parsing,hashmap,key-value,Java,Android,Parsing,Hashmap,Key Value,我正在使用一个web服务,它将其响应表示为一个HTTP样式的键值对列表。我想把它们解析成一个HashMap。我不想编写解析器。我想修改我当前的黑客解决方案,一个string.split(&“),然后是一系列string.split(=”)调用,其中逻辑穿插 有没有人知道会有这样的图书馆?我浏览了Apache和javax,但没有看到太多。我在安卓上做这个 响应的一个简单示例是: result=success&id=8a8d3c30-e184-11e1-9b23-0800200c9a66&a

我正在使用一个web服务,它将其响应表示为一个HTTP样式的键值对列表。我想把它们解析成一个HashMap。我不想编写解析器。我想修改我当前的黑客解决方案,一个
string.split(&“
),然后是一系列
string.split(=”)
调用,其中逻辑穿插

有没有人知道会有这样的图书馆?我浏览了Apache和javax,但没有看到太多。我在安卓上做这个

响应的一个简单示例是:

result=success&id=8a8d3c30-e184-11e1-9b23-0800200c9a66&name=wahooooooo
理想功能:

public HashMap<String, String> parse(InputStream in);
公共HashMap解析(InputStream-in);
您可以使用

只需调用
URLEncodedUtils.parse(您的字符串,Charset.forName(“UTF-8”)。

您将得到一个包含名称和值相关元素的
列表

见此:

是一个简单的程序

您可以使用

只需调用
URLEncodedUtils.parse(您的字符串,Charset.forName(“UTF-8”)。

您将得到一个包含名称和值相关元素的
列表

见此:


是一个简单的程序

如果您有apache库,您可以像这样使用URLEncodedUtils类:

    HashMap<String, String> parameters = new HashMap<String, String>();

    String query = "result=success&id=8a8d3c30-e184-11e1-9b23-0800200c9a66&name=wahooooooo";
    List<NameValuePair> params = URLEncodedUtils.parse(query, Charset.defaultCharset());
    for (NameValuePair nameValuePair : params) {
        parameters.put(nameValuePair.getName(), nameValuePair.getValue());
    }
HashMap参数=新的HashMap();
String query=“result=success&id=8a8d3c30-e184-11e1-9b23-0800200c9a66&name=wahoooo”;
List params=URLEncodedUtils.parse(查询,Charset.defaultCharset());
用于(NameValuePair NameValuePair:params){
parameters.put(nameValuePair.getName(),nameValuePair.getValue());
}

如果您有apache库,您可以像这样使用URLEncodedUtils类:

    HashMap<String, String> parameters = new HashMap<String, String>();

    String query = "result=success&id=8a8d3c30-e184-11e1-9b23-0800200c9a66&name=wahooooooo";
    List<NameValuePair> params = URLEncodedUtils.parse(query, Charset.defaultCharset());
    for (NameValuePair nameValuePair : params) {
        parameters.put(nameValuePair.getName(), nameValuePair.getValue());
    }
HashMap参数=新的HashMap();
String query=“result=success&id=8a8d3c30-e184-11e1-9b23-0800200c9a66&name=wahoooo”;
List params=URLEncodedUtils.parse(查询,Charset.defaultCharset());
用于(NameValuePair NameValuePair:params){
parameters.put(nameValuePair.getName(),nameValuePair.getValue());
}

已回答,但这里是
URLEncodedUtils

public static HashMap<String, String> getQueryString(String url) {
    Uri uri= Uri.parse(url);

    HashMap<String, String> map = new HashMap<>();
    for (String paramName : uri.getQueryParameterNames()) {
        if (paramName != null) {
            String paramValue = uri.getQueryParameter(paramName);
            if (paramValue != null) {
                map.put(paramName, paramValue);
            }
        }
    }
    return map;
}
公共静态HashMap getQueryString(字符串url){
Uri=Uri.parse(url);
HashMap=newHashMap();
for(字符串参数名:uri.getQueryParameterNames()){
if(paramName!=null){
字符串paramValue=uri.getQueryParameter(paramName);
if(paramValue!=null){
map.put(paramName,paramValue);
}
}
}
返回图;
}

已回答,但这里是
URLEncodedUtils

public static HashMap<String, String> getQueryString(String url) {
    Uri uri= Uri.parse(url);

    HashMap<String, String> map = new HashMap<>();
    for (String paramName : uri.getQueryParameterNames()) {
        if (paramName != null) {
            String paramValue = uri.getQueryParameter(paramName);
            if (paramValue != null) {
                map.put(paramName, paramValue);
            }
        }
    }
    return map;
}
公共静态HashMap getQueryString(字符串url){
Uri=Uri.parse(url);
HashMap=newHashMap();
for(字符串参数名:uri.getQueryParameterNames()){
if(paramName!=null){
字符串paramValue=uri.getQueryParameter(paramName);
if(paramValue!=null){
map.put(paramName,paramValue);
}
}
}
返回图;
}

您是否尝试过使用HttpComponents。。org为什么要为这么简单的任务添加一个完整的库?替换string.split(使用regex)是正确的,因为它相当慢。@JAVAGeek-我来看看。@kw4nta-我很乐意使用上面描述的函数或类似的东西。不要忘记HTTP URL查询中的参数名称可能会重复,如果发生这种情况,您可以将它们放在任何类型的映射中,您将丢失数据。是否尝试使用HttpComponents。。org为什么要为这么简单的任务添加一个完整的库?替换string.split(使用regex)是正确的,因为它相当慢。@JAVAGeek-我来看看。@kw4nta-我很乐意使用上面描述的函数或类似的东西。不要忘记HTTP URL查询中的参数名称可能会重复,如果发生这种情况,您可以将它们放在任何类型的映射中,你会丢失数据的,太棒了!你和mabroukb都给出了基本相同的答案,我对NVP的列表非常满意。我两人都投了赞成票,但我会接受他的,因为他的支持率较低。谢谢,太好了!你和mabroukb都给出了基本相同的答案,我对NVP的列表非常满意。我两人都投了赞成票,但我会接受他的,因为他的支持率较低。谢谢,太好了。你和JAVAGeek都很棒。你们两个都需要一些声望,但你们的声望较低,所以我给你们一个接受的机会。库要求我给它发送一个URI,而不是字符串。但是来自服务器的响应没有正确的URI编码。所以这些解决方案我运气不好。太好了。你和JAVAGeek都很棒。你们两个都需要一些声望,但你们的声望较低,所以我给你们一个接受的机会。库要求我给它发送一个URI,而不是字符串。但是来自服务器的响应没有正确的URI编码。所以我对这些解决方案不太走运。