Javaでリストに複数の「リスト[]」パラメータを使用してデシリアライズレスポンスボディ

Njvdev:

:私は、次の形式であるパースHTTPレスポンスボディに希望 list[]=a&list[]=b&list[]=c&list[]=d&list[]=e(異なる数の要素があるかもしれない)へList<String>

私はちょうどすることにより文字列を分割でき&、オフカットlist[]=が、私は(リストにそれをデシリアライズすることができ、ライブラリのいくつかの種類)これを行うには、いくつかのよりエレガントな方法があるかどうだろう

cassiomolin:

私はちょうどで文字列を分割でき&、オフカットlist[]=[...]

あなたは確かにそれを行うことができます。ただに覚えているURLデコード splittigクエリ文字列の後にパラメータを;)

[...]しかし、私は(それまでをデシリアライズすることができ、ライブラリのいくつかの種類これを行うには、いくつかのよりエレガントな方法があるかどうだろう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[]");

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=19291&siteId=1