当前位置: 首页 > 面试题库 >

从Servlet返回JSON响应到Javascript / JSP页面

黄查猛
2023-03-14
问题内容

我认为(实际上我知道!)我在这里做错了事,我试图将一些值填充到HashMap中,并将每个hasmap添加到将添加到JSON对象的列表中:

JSONObject json = new JSONObject();
try
{
    Map address;
    List addresses = new ArrayList();

    int count = 15;

    for (int i=0 ; i<count ; i++)
    {
        address = new HashMap();
        address.put("CustomerName"     , "Decepticons" + i);
        address.put("AccountId"        , "1999" + i);
        address.put("SiteId"           , "1888" + i);
        address.put("Number"            , "7" + i);
        address.put("Building"          , "StarScream Skyscraper" + i);
        address.put("Street"            , "Devestator Avenue" + i);
        address.put("City"              , "Megatron City" + i);
        address.put("ZipCode"          , "ZZ00 XX1" + i);
        address.put("Country"           , "CyberTron" + i);
        addresses.add(address);
    }
    json.put("Addresses", addresses);
}
catch (JSONException jse)
{

}
response.setContentType("application/json");
response.getWriter().write(json.toString());

我的问题是我知道这将返回一个字符串,我似乎无法解析(这是问题)。我的问题是如何返回实际的JSON编码的字符串(甚至应该这样做?),或者针对这种类型的问题的最佳攻击方法是什么?我为此使用的JavaScript如下:

function getReadyStateHandler(req)
{
    // Return an anonymous function that listens to the
    // XMLHttpRequest instance
    return function ()
    {
        // If the request's status is "complete"
        if (req.readyState == 4)
        {
            // Check that a successful server response was received
            if (req.status == 200)
            {
                msgBox("JSON Response recieved...");
                populateDatagrid(req.responseText.toJSON());
            }
            else
            {
                // An HTTP problem has occurred
                alert("HTTP error: " + req.status);
            }
        }
    }
}

请注意,JSON响应可以很好地返回,但是它是一个字符串。任何意见是极大的赞赏。我也愿意使用Google Gson,但是对此没有太多的了解。


问题答案:

得到它的工作!我应该已经建设JSONArrayJSONObject秒,然后将阵列添加到最终的“地址” JSONObject。请注意以下几点:

JSONObject json      = new JSONObject();
JSONArray  addresses = new JSONArray();
JSONObject address;
try
{
   int count = 15;

   for (int i=0 ; i<count ; i++)
   {
       address = new JSONObject();
       address.put("CustomerName"     , "Decepticons" + i);
       address.put("AccountId"        , "1999" + i);
       address.put("SiteId"           , "1888" + i);
       address.put("Number"            , "7" + i);
       address.put("Building"          , "StarScream Skyscraper" + i);
       address.put("Street"            , "Devestator Avenue" + i);
       address.put("City"              , "Megatron City" + i);
       address.put("ZipCode"          , "ZZ00 XX1" + i);
       address.put("Country"           , "CyberTron" + i);
       addresses.add(address);
   }
   json.put("Addresses", addresses);
}
catch (JSONException jse)
{

}
response.setContentType("application/json");
response.getWriter().write(json.toString());

这可以正常工作并返回有效且可解析的JSON。希望这对以后的人有所帮助。谢谢您的帮助Marcel



 类似资料:
  • 首先感谢你花时间回答我的问题。 我想做的是:当我的jsp页面加载时,我想从我的servlet中获取一个值来设置我的按钮的实际状态和我的滑块值的实际状态。在我的页面上更新之后,我想更改它的值。我已经可以将JSP页面值传递给我的servlet,但我有点坚持将值从servlet传递给jsp页面。 这里有一些代码可以帮助 当做 JSP文件 AJAX代码 服务器代码:

  • 问题内容: 这是一个非常基本的请求-响应测试。浏览器使用jQuery $ .ajax API将“来自浏览器的hello”发送到servlet,然后servlet接收此消息,然后使用org.json.simple库创建一个JSON对象,并将带有消息“ hello from server”的JSON响应发送回浏览器。 我在本地主机上运行它,只是假设我的IP地址是123.123.12.123,平台是Ub

  • 我们如何将消息(例如“File uploaded Successed”)传递到调用/上一个jsp页面(例如upload.jsp)。jsp页面正在获取会话的属性,并检查用户登录的部门。它以部门名称确认用户。当用户上传文件,servlet在表单操作中被调用时,servlet检查部门名称并在数据库中插入数据,并在同一个upload.jsp页面上向用户显示消息“文件上传成功”。当iam在请求分派器中传递页

  • 我研究一个简单的问题已经有相当长的时间了。在包括这个网站在内的许多论坛上搜索了很多,但仍然无法解决这个问题。因此请求您的帮助。 我有一个带有文本区域和提交按钮的JSP页面。 在Servlet类中,我执行以下操作- 因此,在我点击提交按钮后,我的请求将转到servlet,并从servlet返回到原始的jsp,但我无法用servlet输出填充文本区域。我已经尝试了很多方法,就像我在互联网上发现的那样,

  • 问题内容: 我有一个通过jQuery AJAX调用的PHP脚本。我希望PHP脚本将JSON格式的数据返回给javascript。这是PHP脚本中的伪代码: 基本上,我需要将两个for循环的结果插入$ json中。 问题答案: Php具有内置的JSON序列化功能。 json_encode *如果可以并且不会遭受“此处未发明”综合症, *请 使用它。

  • 问题内容: 我有一个函数,可使用Pandas分析CSV文件并生成带有摘要信息的字典。我想从Flask视图返回结果作为响应。如何返回JSON响应? 问题答案: 将摘要数据传递给该函数,该函数返回JSON响应。 从Flask 0.11开始,你可以将任何JSON可序列化的类型(不仅是dict)传递为顶级对象。