从Java中的查询字符串中提取参数及其值

Den*_*ees 3 java parameters parsing json

所以我想假设我有一个字符串

"param1=value1&param2={"url":"http://somesite.com?someparam=somevalue&someparam1=somevalue1"}&param3=value3"

我需要它:

param1: value1

param2: {"url":"http://somesite.com?someparam=somevalue&someparam1=somevalue1"}

param3: value3

在Java中解析这个问题的最佳方法是什么?到目前为止,我找不到标准Java库的解决方案,我不想重新发明轮子.

我已经尝试过(但是如果我只在那里放置查询参数,那就不行了):

String url = "http://www.example.com/something.html?one=11111&two=22222&three=33333";
List<NameValuePair> params = URLEncodedUtils.parse(new URI(url), "UTF-8");

for (NameValuePair param : params) {
    System.out.println(param.getName() + " : " + param.getValue());
}
Run Code Online (Sandbox Code Playgroud)

Cla*_*lad 5

为什么不使用像正则表达式这样的东西:

例如像这个".*\\?param1=(.*)&param2=(.*)&param3=(.*)$"这适用于您的网址样本,这就是我添加.*\\?部分的原因;)

这将适用于第一个样本("param1=value1&param2={"url":"http://somesite.com?someparam=somevalue&someparam1=somevalue1"}&param3=value3" - > param1=(.*)&param2=(.*)&param3=(.*)$

当然,如果你的params名字也不是你不知道的东西

  • 试试这个:".*param1 =(.*)&param2 =(.*)&param3 =(.*)"假设你的字符串不是以问号开头 (2认同)