我想(实际上我知道!)我在这里做错了我试图将一些值填充到 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 响应返回正常,但它是一个字符串。任何意见是极大的赞赏。我也愿意使用 googles Gson,但对此了解不多。
最佳答案
成功了!我应该构建一个 JSONObject
的 JSONArray
,然后将该数组添加到最终的“Addresses”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。希望这对将来的其他人有帮助。感谢您的帮助马塞尔
关于java - 将 JSON 响应从 Servlet 返回到 Javascript/JSP 页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6154845/