How to map JSON object to Spring Object

16,311

Make sure to:

  • send JSON object, not JSON String
  • included Jackson on your classpath

Then you can add @RequestBody Employee employee at the controller's method signature.

Share:
16,311
SJS
Author by

SJS

Updated on June 27, 2022

Comments

  • SJS
    SJS almost 2 years

    How to map JSON object to Spring Object... I have AJAX, posting a JSON object to my Spring Controller but how do I make Spring turn that JSON into a Object in java

    Java Code:

    @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 code:

    <%@ 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>