javascript - 如何用键值对数据的值解析 'HttpServletRequest'

标签 javascript ajax jakarta-ee servlets

我从我的客户端向我的服务器发送一个 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/

相关文章:

javascript - 将 Angular 1 服务注入(inject) Angular 4

javascript - 更改 iframe 目标

javascript - React-router - 通过 history.push() 导航刷新页面

javascript - 使用下拉标签来验证其他下拉值

python - 解析在 Django 中使用 Ajax GET 方法发送的 json 对象

java - java中的同步(对象和静态方法)

java - eclipse/java server faces - 如何为 jsf 2.1 配置 facets 项目

ajax - JSF f :ajax listener not called

javascript - jQuery 手机 : How to invoke this (default) error loading page message?

java - Spring Security 的 SecurityContextHolder : session or request bound?