有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java解析获取jquery发送的参数

编辑也许这是更好的解释(抱歉,我对javascript的了解比英语还多……而且我对javascript的了解不是很好:-)

我需要映射一个用jquery$发送的复杂javascript对象。我的servlet提供的JavaBean中的ajax

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

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

如你所见,我在$内发送了一个复杂的对象。ajax数据,而不是简单的地图。 如果我用firebug sniffer检查http请求的发送方式,我会得到以下帖子参数:

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

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

EDIT2 这个:Java convert JSONObject to URL parameter似乎与我的要求正好相反。但它没有答案


共 (1) 个答案

  1. # 1 楼答案

    这是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 bean)

    编辑2

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

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