Десериализовать тело ответа с несколькими параметрами "list []" для List в Java - PullRequest
0 голосов
/ 02 марта 2020

Я хотел бы проанализировать тело ответа HTTP в следующем формате: list[]=a&list[]=b&list[]=c&list[]=d&list[]=e (может быть различное количество элементов) в List<String>

Я мог бы просто разделить строку на & и обрезать list[]=, но мне интересно, есть ли какой-нибудь более элегантный способ сделать это (какая-то библиотека, способная десериализовать ее в List)

1 Ответ

1 голос
/ 02 марта 2020

Я мог бы просто разделить строку на & и обрезать list[]= [...]

Вы наверняка могли бы сделать это. Просто не забудьте URL-декодировать параметры после разделения строки запроса;)

[...], но мне интересно, есть ли более элегантный способ сделать это (некоторые библиотека, которая может десериализовать ее до List)

Если вы ищете библиотеку, вы можете использовать Apache URLEncodedUtils:

String queryString = "list[]=a&list[]=b&list[]=c&list[]=d&list[]=e";

List<NameValuePair> valuePairs = URLEncodedUtils.parse(queryString, StandardCharsets.UTF_8);
Map<String, List<String>> queryParams = valuePairs.stream()
        .collect(groupingBy(NameValuePair::getName, mapping(NameValuePair::getValue, toList())));

List<String> strings = queryParams.get("list[]");
...