请问java怎么实现后端拼接出复杂json,前端ajax调用,拼接出复杂表格?

因为是复杂json,我有2个或者多个简单javabean类,将多个简单javabean 拼接成json这一步实现不出,
然后我想前端ajax应该能调用后端这个类 把json异步传给前端,但是当前端拿到数据之后,我不知道怎么给表格动态拼接。

表格类似:

姓名 | 性别 | 学科 | 高一上 | 高一下 | 高二上 | 高二下

张三 男 语文 90 80 60 70
数学 90 90 90 90
英语
物理
化学

生物


    //例如有一个实体类
    public class StudentGrade{

        //姓名
        private String name;
        //姓名(0=男;1=女)
        private Integer sex;
        //学科
        private String subject;
        //高一上学期分数
        private Float lastSemesterFirstGrade;
        //高一下学期分数
        private Float nextSemesterFirstFrade;
        //高二上学期分数
        private Float lastSemesterSecondGrade;
        //高二上学期分数
        private Float nextSemesterSecondFrade;

        //get set
    }

    @Controller
    @RequestMapping("studentGrade")
    public class StudentGradeController{

        @Resource
        private XxxService xxxService;

        @RequestMapping(value="/getStudentGradeData",method = RequestMethod.POST)
        public String getStudentGradeData(){
                        //通过接口获取的list数据,然后转json
            List<StudentGrade> list = xxxService.getStudentGradeData();
            JSONArray json = JSONArray.fromObject(list);
            return json.toString();
        }
    }

        //ajax
        $.ajax({
             type: "POST",
             url: "xx/studentGrade/getStudentGradeData",
             data: null,
             dataType: "json",
             success: function(json){
                        //判断非null非空
                            var list = json;

                            var tableHtml = '<table><th><tr></tr>...以此类推</th>';
                            for(var i = 0; i < list.length; i ++){
                            //这里加个判断,0=男,1=女
                                tableHtml += '<tr><td>' + list[i].name + '</td><td>' + list[i].sex + '...以此类推</td></tr>';
                            }

                            tableHtml += '</table>'

                            //最后tableHtml就是拼好的 table html,
             }
         });

那你可以拼接实体类呀,按照你想要的格式,实体类里面套实体类然后转json就ok了举个例子 class User{ private Student student; private Integer id}

新建个包装类,每个javabean定义成它的一个属性,变量类型可以根据需要组合定义,比如学科和学期分数可以定义成Map类型:

Map<String, List<Stage>>

包装类序列化输出即可。