spring boot gradle 后端接收前端ajax传递来的json数组字符串并转化为对象数组

首先在build.gradle文件中添加:

compile group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.9.8'

后端建好数据对象:

package com.exampleb.demob;

public class Person {
    private String id;
    private String name;
    public String getId(){
        return id;
    }
    public void setId(String id){
        this.id=id;
    }
    public String getName(){
        return name;
    }
    public void setName(String name){
        this.name=name;
    }
}

然后写好接收数据的controller:

@RequestMapping(value="/test")
    @ResponseBody
    public String test(@RequestParam String users) throws IOException {
        // 业务处理
        System.out.println(users);

        ObjectMapper mapper=new ObjectMapper();
        com.fasterxml.jackson.databind.type.ArrayType arrayType = mapper.getTypeFactory().constructArrayType(Person.class);
        Person[] persons = mapper.readValue(users, arrayType);
        for(Person person:persons){
            System.out.println("person id and name: "+person.getId()+" ---> "+person.getName());
        }
        return users;
    }

前端提交数据的网页:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>test</title>
    <script src="jquery.min.js"></script>
</head>
<body>
    <button id="btnSubmit">submit</button>
    <script type="text/javascript">
        var userArr = [];
        for (var i = 1; i <= 3; i++) {
            var user = {};
            user['id'] = i;
            user['name'] = 'name_' + i;
            userArr.push(user)
        }

        $(function () {
            $("#btnSubmit").click(function () {
                $.ajax({
                    url: '/test',
                    type: 'POST',
                    data: {users:JSON.stringify(userArr)},
                    success: function (responseText) {
                        alert(responseText);
                    }
                });
            });
        });
    </script>

</body>
</html>

猜你喜欢

转载自blog.csdn.net/MAILLIBIN/article/details/86598860