如何在servlet中读取JSON字符串

时间:2011-12-26 03:08:04

标签: json jquery servlets

This question似乎对我要做的事情有了答案,但它似乎对我不起作用。 servlet很好地发布,在监视窗口中,我可以在那里看到我的json对象,用于servlet _parameters的{​​{1}}成员变量,但我似乎无法获取参数。

这是我的代码。

的Javascript

HttpRequest

Servlet (我也试过“作者”和“标题”但没有回来):

// build data from input fields
var jsondata = '{"author":"TEST", "title":"XYZ"}';

$.ajax({
    type : 'POST',
    dataType : 'json',
    data: jsondata,
    url : '/submitquote',
    timeout : 5000,
    success : function(data, textStatus) {
        // whatever
    },
    error : function(xhr, textStatus, errorThrown) {
        // whatever
    }
});

这就是我在请求对象上使用变量监视// get data String postData = req.getParameter("jsondata"); 所看到的:

_parameters

我该怎么办?

任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:4)

首先,datatype参数指定出来的数据类型,而不是进入的数据。

其次,data参数应该给出参数字典,在这种情况下,其中一个参数是已经被字符串化的JSON对象:

var jsondata = {"author":"TEST", "title":"XYZ"};

$.ajax({
    type : 'POST',
    dataType : 'json',
    data: { jsondata : JSON.stringify(jsondata)},
    url : '/submitquote',
    timeout : 5000,
    success : function(data, textStatus) {
        // whatever
    },
    error : function(xhr, textStatus, errorThrown) {
        // whatever
    }
});

现在req.getParameter("jsondata")有(仍然是JSON字符串化的)数据,您需要自己解析它。 JSON.org创建了一个非常好的库。

另外两个注意事项:

  1. 这里有两个“jsondata”。首先是JavaScript变量,在第一行中分配并在stringify调用中使用;第二个是Ajax参数名称,在data: {之后指定并在getParameter调用中使用。
  2. 如果你真的只是传递“作者”和“标题”,你可以忘记JSON的所有内容,只使用你原来的Javascript加req.getParameter("author")req.getParameter("title")