在servlet中使用JSON对象时出现问题

这就是我正在尝试做的事情,它非常简单,但我陷入困境:我正在尝试将JSP中形成的JSON对象发送到服务器端servlet并解析它。

到目前为止我做了什么:

  • 构建了json。
  • 将json发送到后端
  $就({
            数据:jsontosend,
             url:'MYSERVLET?name = asdf',
            成功:function(res){
                警报( '贴');
             }
         }) 

问题:

  • 这个JSON的名称是什么,所以我可以使用request.getParameter()在servlet中获取它?
  • 当我打印request.getParameterNames()时,我得到参数名称作为JSON字符串本身,所以MYSERVLET内的所有参数名称的输出如下所示
参数=名称
参数= {“ticker”:“asd”,“date”:“asd”,“bucket”:“300”,“entry”:[{“type”:“asd”,“indicator”:“asd”,“条件 “:” ASD “}],” 退出 “:[{” 类型 “:” QWE”, “指示器”: “QWE”, “条件”: “QWE”}]}

任何人都知道问题是什么?

此外,我尝试在stackoverflow上查看此问题,但同样存在问题。 还有一个重复的问题没有得到解答。

救命! 🙁

阅读http://api.jquery.com/jQuery.ajax/#sending-data-to-server :

data选项可以包含forms为key1 = value1&key2 = value2的查询字符串,或者包含{key1:’value1’,key2:’value2′}forms的映射。 如果使用后一种forms,则在发送之前使用jQuery.param()将数据转换为查询字符串。

所以,你应该使用

$.ajax({ data: {theNameOfTheParameter : jsontosend, name : 'asdf'}, url: 'MYSERVLET', success: function(res){ alert('posted'); } }) 

并使用request.getParameter("theNameOfTheParameter")来获取JSON字符串。

您没有在servlet中获取json对象。 JQuery将它转换为http参数,就像你从表单中获得的那样。 示例:?ticker = asd&bucket = 300

所以回答你的问题。 没有单一的名字。 反对的json爆炸了多个名字。

编辑:尝试添加类型:’post’

为了您的要求。 您还可以添加processData:false,在这种情况下,JQuery将发送json而不是http params。 无论如何,我真的建议使用像fiddler这样的http调试器,它会让它变得有意义来回传递。