How do I send a json object from my rest service so I can parse in out on the client side javascript
I just simply want to return a JSON object (using ajax) from my server to the client side - so I'm able to read the data in the client side
@GET
@Produces("application/json")
@Consumes("application/json")
@Path("/getStat开发者_StackOverflow中文版us/")
public void getStatus(
@Context HttpServletRequest request,
@Context HttpServletResponse response) throws ServletException,
IOException
{
//create the JSON Object to pass to the client
JSONObject object=new JSONObject();
response.setContentType("text/javascript");
try
{
object.put("name", nameDataFromClass);
object.put("status",someData);
}
catch(Exception e)
{
throw new ServletException("JSON Hosed up");
}
String json = object.toString();
response.getOutputStream().println(json);
}
This would be in the client side for JSP I want to extract the data out on the page
<html>
<head>
<!-- Calls in jQuery file -->
<script src="jquery.js"></script>
<title>JQuery Test</title>
<script>
$.getJSON("http://localhost:8080/scout/rest/admin/mamba/getStatus",
function(json)
{
alert("Server naame: " + json.name);
});
</script>
</head>
<body>
</body>
</html>
The Jackson library should take care of marshalling json objects to your objects, and vice versa. Just create a simple POJO, like this:
public class Mystatus{
public String name;
public String status;
public Mystatus(){} // a default empty constructor is needed
public Mystatus(String name,String status){
this.name=name;
this.status=status;
}
}
Then return this object from your RESTful webservice:
@GET
@Produces("application/json")
@Consumes("application/json")
@Path("/getStatus/")
public Mystatus getStatus(
@Context HttpServletRequest request,
@Context HttpServletResponse response)
{
response.setContentType("text/javascript");
return new Mystatus("Hello","World");
}
@GET
@Produces("application/json")
@Consumes("application/json")
@Path("/status")
// server:8080/server/rest/status
public String getStatus(
@Context HttpServletRequest request,
@Context HttpServletResponse response) throws Exception
{
// Create a string to hold JSON
String json;
Collection<Server> svr = SomeHashMap.getStuff().values();
JSONArray jArray = new JSONArray();
for (Server i : svr)
{
JSONObject m = new JSONObject();
ServerStatus status = i.getStatus();
m.put("id", i.getId());
m.put("name", i.getName());
m.put("status", status.getState());
jArray.add(m);
}
json = jArray.toString();
}
response.setContentType("text/javascript");
response.getOutputStream().print(json);
response.flushBuffer();
return null;
}
index.jsp
<head>
<script src="jquery-1.6.js"></script>
<!--AJAX FOR STATUS PAGE REFRESH -->
<script type="text/javascript">
//when page is ready do the following
$(document).ready(function()
{
// Disable caching of AJAX responses
$.ajaxSetup ({cache: false});
//set interval of refresh
setInterval(doAjaxStuff, 1000);
//function to call to fire off ajax
function doAjaxStuff()
{
$.ajax
({
url: "status", // <-- this refers to the Controller function above called "status()"
dataType: 'json',
success: function(json)
{
//traverse throught each element in the incoming JSON object
for(var i = 0; i< json.length; i++)
{
if(json[i].status == "ACTIVE")
{
$("#Status"+json[i].id).html("Running");
}
}
}
});
}
});
</script>
</head>
精彩评论