是否可以使用Java servlet API从诸如此类的请求中解析字符串键?
http://localhost:8080/?assocArray[key1]=value1&assocArray[key2]=value2&assocArray[key3]=value3
getParameterValues("assocArray") returns ["value3","value1","value1"]
Run Code Online (Sandbox Code Playgroud)
返回数组中值的排序不是键的顺序(不重要)
已解决:有可能,键被解释为简单的全局键字符串.Java不会将它们识别为数组.使用正则表达式
JB *_*zet 18
对于相同的参数名称,您可能有多个值:
http://localhost:8080/?param1=value1¶m1=value2¶m1=value3
Run Code Online (Sandbox Code Playgroud)
在这种情况下,getParameterValues("param1")将返回一个String[]包含3个元素:"value1","value2"和"value3".
在你给的例子中,定义了3个不同的参数:assocArray[key1],assocArray[key2]和assocArray[key3].servlet API将它们视为3个完全不同的参数,没有任何共同点.因此,您必须致电getParameter("assocArray[key1]")获取"value1",getParameter("assocArray[key2]")获取"value2"等.
Bal*_*usC 10
不是直接的.将[]在HTTP请求的参数没有特殊的含义,是由不被识别为数组键了Servlet API(你或许这的确有这个专有解析器PHP程序员?).你需要分析和收集它自己在一个循环.
例如,
Map<String, String> assocArray = new LinkedHashMap<String, String>();
for (Entry<String, String[]> entry : request.getParameterMap().entrySet()) {
String name = entry.getKey();
if (name.startsWith("assocArray[")) {
String key = name.substring(name.indexOf('[') + 1, name.indexOf(']'));
assocArray.put(key, entry.getValue()[0]);
}
}
Run Code Online (Sandbox Code Playgroud)