spring-mvc - springmvc的注解@requestBody自动封装复杂对象?

查看:226
本文介绍了spring-mvc - springmvc的注解@requestBody自动封装复杂对象?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

springmvc的注解@requestBody可以通过页面提交json来自动封装成bean对象,但是如果这样的怎么处理

public class User{
    private String id;
    private int age;
    private String name;
    private Class classInfo;
    //getter,setter
}
public class ClassInfo{
    private String id;
    private name;
    private User classMaster;
    private School school;
    @JsonIgnore
    private Set<User> teachers;
    //getter,setter
    
}
public class School{
    private String id;
    private String name;
    //getter,setter
}

我封装的json对象是

"classInfo":{
    "id":"xxxxx",
    "name":"一年级三班",
    //班主任
    "classMaster":{
        "id":"xxxx",
        "age":"92",
        "name":"班主任"
    },
    //学校
    "school":{
        "id":"xxx",
        "name":"旭日东升小学"
    },
    //教师集合
    "teachers":[
        {
             "id":"xxxx",
            "age":"92",
            "name":"语文老师"
        },
        {
             "id":"xxxx",
            "age":"92",
            "name":"数学老师"
        }
    ]
}

提交的时候data : JSON.stringify(classInfo)
这样的班级里面包含了班主任,教师集合,还有学校,后台是这样的

@requestMapping("xxxx")
@responseBody
public Map<String,Object> addClass(Model model, @requestBody ClassInfo classInfo){
    xxxx
}

这个时候classInfo的数据可以收的到,但是对应的无论是依赖对象还是集合属性,都是null,请问这种情况怎么处理,是不是json的格式不太对
spring3.2.8的

解决方案

初步看应该是JSON格式有问题,多了一层,针对实体ClassInfo的JSON格式应该是:

{
    "id": "xxxxx",
    "name": "一年级三班",
    "classMaster": {
        "id": "xxxx",
        "age": "92",
        "name": "班主任"
    },
    "school": {
        "id": "xxx",
        "name": "旭日东升小学"
    },
    "teachers": [
        {
            "id": "xxxx",
            "age": "92",
            "name": "语文老师"
        },
        {
            "id": "xxxx",
            "age": "92",
            "name": "数学老师"
        }
    ]
}

这篇关于spring-mvc - springmvc的注解@requestBody自动封装复杂对象?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆