2014-12-12 2 views
3

Так давайте предположим, что у меня есть строка, какпараметры Extract и их значения из строки запроса в Java

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

url.split («=») - как об этом? –

+1

Нет, это разделило бы значение от json, а также – Denees

+0

может ли часть json содержать символ '&'? если нет, используйте url.split ("&") – mounaim

ответ

5

Почему бы вам не использовать что-то вроде регулярного выражения:

, например, как этот ".*\\?param1=(.*)&param2=(.*)&param3=(.*)$" это работает для вашего образца URL-адреса, поэтому я добавил .*\\? части;)

и это будет работать для первого образца ("param1=value1&param2={"url":"http://somesite.com?someparam=somevalue&someparam1=somevalue1"}&param3=value3" -> param1=(.*)&param2=(.*)&param3=(.*)$

Конечно, если ваши имена PARAMS не также то, что вы не знаете о

+0

Хорошо, Шаблон p = Pattern.compile (". * \\? Param1 = (. *) & Param2 = (. *) & Param3 = (. *) $"); 'Then' Matcher m = p.matcher (queryString); 'и то я попытался сделать 'find()' through matcher и это не дает мне никаких результатов, если 'm.group (1)'. – Denees

+2

попробуйте следующее: ". param1 = (. *) & param2 = (. *) & param3 = (. *) «если ваша строка не начинается с вопросительного знака – mish

+0

Работала сейчас, приветствует ребята, спасибо за помощь. – Denees

Смежные вопросы