【问题标题】:How to read JSON string in servlet如何在 servlet 中读取 JSON 字符串
【发布时间】:2012-01-27 19:05:37
【问题描述】:

This question 似乎对我正在尝试做的事情有答案,但它似乎对我不起作用。 servlet 可以正常发布,并且在监视窗口中我可以看到我的 json 对象,其中包含 servlet HttpRequest_parameters 成员变量,但我似乎无法获取参数。

这是我的代码。

Javascript

// 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
    }
});

Servlet(我也尝试过使用“author”和“title”但没有返回):

// get data
String postData =  req.getParameter("jsondata");

这是我在请求对象上使用变量 watch for _parameters 看到的:

{{"author":"TEST", "title":"XYZ"}=}

我到底是怎么把这些东西弄出来的?

任何帮助表示赞赏!

【问题讨论】:

    标签: json jquery servlets


    【解决方案1】:

    首先,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")

    【讨论】:

    • 谢谢!我现在可以将参数作为 json 获取。在您的注释 2)您说我可以使用我的代码并查询“作者”和“标题”,但我试过了,但它似乎不起作用,知道我的代码为什么吗?
    • 啊,我误读了您的原始代码:对象周围有单引号(现在在我的示例中已删除)——这正是 stringify 函数应该为您做的。如果你想使用 JSON(更通用但更复杂的解决方案),你应该使用 stringify 函数,而不是尝试手动生成字符串;如果您想使用单个参数(更多 HTTP-y 解决方案),请取出引号并直接使用 `getParameter()' 访问参数
    • 感谢所有帮助。我认为这个问题得到了回答。我现在在解析 json 对象时遇到问题......可能会要求另一个 q 并在下面发布链接。
    猜你喜欢
    • 2011-07-17
    • 1970-01-01
    • 1970-01-01
    • 2017-07-21
    • 2021-11-16
    • 2020-01-27
    • 2016-10-08
    • 2014-09-05
    • 2023-04-04
    相关资源
    最近更新 更多