Извлечение параметров и их значений из строки запроса в 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());
}

Ответы на вопрос(1)

Ваш ответ на вопрос