2012-06-13 226 views
3

如何將JSON對象映射到Spring對象...我有AJAX,向我的Spring控制器發佈了JSON對象,但是如何讓Spring將該JSON變成java中的Object如何將JSON對象映射到Spring對象

Java代碼:

@RequestMapping(method=RequestMethod.POST, value="/employee") 
    public ModelAndView addEmployee(@RequestBody String body) { 

     System.out.println("in post: " + body); 
     Source source = new StreamSource(new StringReader(body)); 


     System.out.println("source: " + source.toString()); 
     // 
     // how do I turn the JSON String into a Java Object? 
     // 
     return new ModelAndView(XML_VIEW_NAME, "object", body); 
    } 

JavaSript/HTML代碼:

<%@ page language="java" contentType="text/html; charset=UTF-8" 
    pageEncoding="UTF-8"%> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
<title>This is a project to show how to use RESTful</title> 
</head> 
<body> 
<script type="text/javascript">var contexPath = "<%=request.getContextPath()%>";</script> 
<script src="<%=request.getContextPath()%>/js/jquery.js"></script> 


<script type="text/javascript"> 
function doAjaxPost() { 


    var queryString = $('#htmlform').serialize(); 

    alert("doAjaxPost Called :" + queryString +":"); 

     $.ajax({ 
      contentType : "application/json", 
      dataType : 'json', 
      type : "POST", 
      url : contexPath + "/service/employee", 
      data : queryString, //json serialization (like array.serializeArray() etc) 

      success : function(data) { 
       alert("Thanks for submitting. \n\n" + response.result); 
       // response 
      }, 
      error : function(request, status, error) { 
        alert('Error: ' + e); 
      } 
     }); 
    } 
</script> 

<H1>Add Employee</H1> 

<p> 
<form name="htmlform" id="htmlform"> 
<table border=1> 
    <thead><tr> 
     <th>ID</th> 
     <th>Name</th> 
     <th>Email</th> 
    </tr></thead> 

    <tr> 
     <td><input type="text" name="ID" maxlength="5" size="3"></td> 
     <td><input type="text" name="Name" maxlength="10" size="10"></td> 
     <td><input type="text" name="Email" maxlength="10" size="10"></td> 
    </tr> 

</table> 
<input type="button" value="Save Employee" onclick="doAjaxPost();" /> 
<p> 
<p> 
</form> 
[<a href="http://localhost:8080/RESTful/service/employees">List all Employees</a> | <a href="add.jsp">Employee Form Test</a>] 


</body> 
</html> 

回答

1

確保:

  • 發送JSON對象,而不是JSON字符串
  • 包含在classpath

傑克遜然後你就可以在控制器的方法簽名添加@RequestBody Employee employee