Java解析获取jquery发送的参数

标签 java jquery ajax post get

编辑也许这是更好的解释(抱歉,我比英语更了解 javascript...而且我不太了解 javascript :-)

我需要通过我的 servlet 将使用 jquery $.ajax 发送的复杂 JavaScript 对象映射到 java bean 中。

这是一个用 jQuery 完成并用 Firebug 嗅探的真实示例。 这是js代码:

$("#test").click(function(){
    $.ajax({
        url: "/server", 
        data: { "data1": [{key:1, val:2},{key:3, val:4}] }, 
        type: "post",               
        }
    });
});

如您所见,我在 $.ajax 数据中发送一个复杂的对象,而不是一个简单的 map 。 如果我检查如何使用 firebug 嗅探器发送 http 请求,我会得到以下 POST 参数:

Parameters application/x-www-form-urlencoded
data1[0][key]   1
data1[0][val]   2
data1[1][key]   3
data1[1][val]   4

这就是 jquery 将复杂对象转换为简单映射的方式。我想在 java bean 中获取这个对象。 谢谢。

编辑2 这个:Java convert JSONObject to URL parameter似乎和我的要求完全相反。但它没有答案...

最佳答案

这是 JSON,您可以使用 Gson用于将其映射到 POJO 的库。请参阅this tutorial

读取 HttpServletRequest

Gson gson = new Gson();
SomeClass someClass = gson.fromJson(
        new InputStreamReader(httpServletRequest.getInputStream()), SomeClass.class);

编辑

您可能想查看this topic这应该可以帮助您将 JSON 映射到 POJO(或您所说的 Java beans)。

编辑2

尝试添加processData参数并将其设置为false。这应该可以防止将给定的 JSON 转换为查询字符串。

$("#test").click(function(){
  $.ajax({
      url: "/server", 
      data: { "data1": [{key:1, val:2},{key:3, val:4}] }, 
      type: "post", 
      processData: false
  });
});

关于Java解析获取jquery发送的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10723400/

相关文章:

java - 基本TCP通讯端口相关查询

javascript - 通过 PushState 和 Jekyll 使用 AJAX 加载

javascript - 如何使用 JQuery 操作 Template 元素?

javascript - 如何从 anchor 标记将多个值传递到 Bootstrap 弹出窗口?

php - 我在 php 上使用 ajax 发送的值时总是出现错误

javascript - 如何在ajax html()中获取子数组

java - 绘制基于图 block 的 map

java - Spring Rest Controller 不适用于文件上传

java - 如何在java中从另一个类中删除jTable列

javascript - 检查 Ajax 调用中是否加载了 JavaScript?