Creo (de hecho, lo sé) Estoy haciendo algo mal aquí Estoy intentando completar algunos valores en HashMap y agregar cada mapa de uso a una lista que se agregará a un JSON objeto:Devolver la respuesta JSON de Servlet a la página Javascript/JSP
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());
Mi problema es que sé que esto está volviendo una cadena, que parece que no puede I a analizar (que es el problema). Mi pregunta es ¿cómo devuelvo la cadena codificada en JSON real (o incluso debería estar haciendo esto?) O cuál es el mejor método de ataque para este tipo de problema. El código JavaScript que estoy utilizando para esto es a continuación:
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);
}
}
}
}
Nota la respuesta JSON vuelve fina, pero es una cadena. Cualquier consejo es muy apreciado. También estoy empezando a usar Google Gson, pero no tengo mucho conocimiento sobre eso.
Usted no debe tratar de crear un JSON cadena codificada usted mismo; Me sorprendería mucho que su código del lado del servidor no proporcione una función de biblioteca para codificar correctamente un objeto en una cadena codificada JSON. –
posible duplicado de [Crear JSON obect y convertirlo a String en Java] (http://stackoverflow.com/questions/5685613/create-json-obect-and-convert-it-to-string-in-java) –