将键/值对列表编码为URL请求参数

时间:2012-10-14 14:52:25

标签: jsf servlets servlet-3.0

是否有标准API调用(或调用集)允许我将键/值对列表编码为SINGLE请求参数?不知何故,我以前从未这样做过。

我正在寻找的是生成一个URL,该URL对任意长的参数串进行编码,这些参数将由指示的页面解码。例如:

http://someth.ing/page?params=xxxxxxxxxxxxx

其中xxxxxxx是

的编码形式
Map<String, String>

如果没有,那么

List<String>

我知道我的另一种选择是将每个密钥编码为自己的请求参数,但这会在解码端创建大量的解析工作,我宁愿避免。有什么建议吗?

1 个答案:

答案 0 :(得分:1)

您只需转换为JSON即可。您可以使用其他Google Gson

Map<String, String> data = createItSomehow();
String dataAsJson = new Gson().toJson(data);
String url = "http://example.com/some?data=" + URLEncoder.encode(data, "UTF-8");
// ...

另一方面,假设一个servlet:

String dataAsJson = request.getParameter("data");
Map<String, String> data = new Gson().fromJson(json, new TypeToken<Map<String, String>>(){}.getType());
// ...