从Servlet返回JSON响应到Javascript / JSP页面
||
我认为(实际上我知道!)我在这里做错了一些事情,我试图将一些值填充到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,但是对此没有太多的了解。
没有找到相关结果
已邀请:
3 个回复
柑恫祟
。请注意以下几点:
这可以正常工作并返回有效且可解析的JSON。希望这对以后的人有所帮助。感谢您的帮助Marcel
艰管垮淮
Servlet返回此JSON对象,如下所示:
如下所示,使用AngularJs从浏览器调用此Servlet。
该代码有效,并且在警报对话框中显示正确的数据: Data.header.status:成功 Data.header.FailureReason:无 Data.header.DetailElements:2 Data.Elements:逗号分隔的字符串值,即NhAdminTree,userName
甲车劲