【问题标题】:Extract parameters and their values from query string in Java从Java中的查询字符串中提取参数及其值
【发布时间】:2014-12-12 14:25:42
【问题描述】:

所以假设我有一个像

这样的字符串

"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());
}

【问题讨论】:

  • url.split("=") - 这个怎么样?
  • 不,它也会从 json 中拆分值
  • json部分可以包含'&'字符吗?如果没有,请使用 url.split("&")
  • 是的,我忘了提这个,可能还有一个带有一些参数的链接
  • 你知道参数名称列表吗?

标签: java json parsing parameters


【解决方案1】:

你为什么不使用正则表达式之类的东西:

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

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

当然,如果你的参数名称也不是你不知道的东西

【讨论】:

  • 好的,我尝试了Pattern p = Pattern.compile(".*\\?param1=(.*)&amp;param2=(.*)&amp;param3=(.*)$");,然后是Matcher m = p.matcher(queryString);,然后我尝试通过匹配器执行find(),如果m.group(1),它不会给我任何结果。
  • 试试这个:".*param1=(.*)&param2=(.*)&param3=(.*)" 假设你的字符串不以问号开头
猜你喜欢
  • 2019-02-18
  • 2020-01-07
  • 1970-01-01
  • 2020-05-16
  • 2017-12-09
  • 1970-01-01
  • 2010-11-01
  • 2011-06-14
相关资源
最近更新 更多