作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我从我的客户端向我的服务器发送一个 ajax 请求。
这是我传递的数据结构:
data = {"key1" : "value1" , "key2" : {"subkey1": "subvalue1" ,"subkey2" : "subvalue2"}};
在服务器端我正在做以下事情:
private Map<String, Object> parseItemData(HttpServletRequest request) {
Enumeration<String> parameterNames = request.getParameterNames();
while (parameterNames.hasMoreElements()) {
String paramName = parameterNames.nextElement();
String[] paramValues = request.getParameterValues(paramName);
if(paramName.equals("itemSpecifics"))
{
System.out.println(paramName);
for (int i =0 ; i<paramValues.length; i++)
{
System.out.println(paramName +": "+paramValues[i] );
}
}
}
return item;
}
这是我得到的输出:
itemSpecifics: [object Object]
有什么办法吗?
解决方案:
在嵌套键值对的情况下,我必须手动使用 JSON.stringify()
作为嵌套键值,以便将其作为 JSON
发送。
最佳答案
这可能对你有帮助。
使用getParameterMap()
方法获取所有键值对。
Map<String, String[]> requestParams = request.getParameterMap();
获取JSONObject的代码如下:
JSONObject jsonObject=null;
Map<String,String> out = new HashMap<String, String>();
Map<String,String[]> map = request.getParameterMap();
for (Map.Entry<String,String[]> mapEntry : map.entrySet()) {
String value[] = mapEntry.getValue();
Object object = value.length == 1 ? value[0] : value;
try {
jsonObject = new JSONObject((String)object);
parse(jsonObject,out);
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
response.getWriter().print(out);
要解析 json,请使用解析函数:我已从 How can I iterate JSONObject to get individual items 获得帮助
public static Map<String,String> parse(JSONObject json , Map<String,String> out) throws JSONException{
Iterator<String> keys = json.keys();
while(keys.hasNext()){
String key = keys.next();
String val = null;
try{
JSONObject value = json.getJSONObject(key);
parse(value,out);
}catch(Exception e){
val = json.getString(key);
}
if(val != null){
out.put(key,val);
}
}
return out;
}
关于javascript - 如何用键值对数据的值解析 'HttpServletRequest',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27177897/
我是一名优秀的程序员,十分优秀!