一尘不染

在Servlet内检索从JSON发送为JSON的数据

json

我在从Java servlet内的JavaScript检索以JSON形式发送的数据时遇到查询。以下是我在做什么…

这是JavaScript内向Servlet发出请求的代码的一部分

type : "POST",
url: 'getInitialData',
datatype: 'json',
data : ({items :[{ name: "John", time: "2pm" },{name: "Sam", time: "1pm" }]}),
success: function(data) {
    try{
          ////Code to be handeled where response is recieved
       }catch(e){
        alert(e);
    }
}

在发出此请求时,我尝试检索从Servlet中的JavaScript发送的参数,但这样做时,我首先对如何从请求中检索数据感到困惑

我在servlet中使用了以下内容:

注意: 我的Servlet中的内容类型设置为: apllication / json

 response.setContentType("application/json");

 request.getParameterMap();

上面显示了以下数据,但我无法弄清楚如何工作并获取实际数据

{items[1][name]=[Ljava.lang.String;@1930089, items[0][time]=[Ljava.lang.String;@860ba, items[1][time]=[Ljava.lang.String;@664ca, items[0][name]=[Ljava.lang.String;@1c334de}

而以下代码为我提供了预期为null的异常。

request.getParametervalues("items");

除其他外,我尝试了request.getParameter(); request.getParameterNames(); 但徒劳的

我的方向错误吗?请指导我!请让我知道如何释放这些价值。

感谢您阅读这篇长文章…

Sangeet


阅读 255

收藏
2020-07-27

共1个答案

一尘不染

请求参数映射是Map<String, String[]>映射键,其中映射键是参数名称,映射值是参数值。–HTTP允许在同一名称上使用多个值。

给定您的地图打印输出,以下方法应该起作用:

String item0Name = request.getParameter("items[0][name]");
String item0Time = request.getParameter("items[0][time]");
String item1Name = request.getParameter("items[1][name]");
String item1Time = request.getParameter("items[1][time]");

如果您需要更多动态信息,请使用以下命令:

for (int i = 0; i < Integer.MAX_VALUE; i++) {
    String itemName = request.getParameter("items[" + i + "][name]");
    String itemTime = request.getParameter("items[" + i + "][time]");

    if (itemName == null) {
        break;
    }

    // Collect name and time in some bean and add to list yourself.
}

请注意,设置 响应 内容类型与收集 请求 参数无关。

2020-07-27