比如目前有个对象 Person,有属性     sex   age   name
List<Person> 是按  sex 和   age 排序过的。例如
男   18   a
男   18   b
男    19  c
男    20  d
男    20   e
女   18   q
女   19   a
女    19  z
女    20  w
女    20   s
构造成前端可以识别的json[
    {
        "sex": "男",
        "data": [
            {
                "age": 18,
                "data": [
                    "a",
                    "b"
                ]
            },
            {
                "age": 19,
                "data": [
                    "c"
                ]
            },
            {
                "age": 20,
                "data": [
                    "d",
                    "e"
                ]
            }
        ]
    },
    {
        "sex": "女",
        "data": [
            {
                "age": 18,
                "data": [
                    "q"
                ]
            },
            {
                "age": 19,
                "data": [
                    "a",
                    "z"
                ]
            },
            {
                "age": 20,
                "data": [
                    "w",
                    "s"
                ]
            }
        ]
    }
]除了for循环里套for循环,还有什么方法可以实现?

解决方案 »

  1.   

    SpringMVC中提供了将集合转换成json数据格式的功能,就拿你这个数据来说。
    例如:
    @ResponseBody
    public List<Map<String,Object>> showJson
    {
         List<Person> personList = ......
         List<Map<String,Object>> resultList = new ArrayList<>();
         for(Person person:personList)
         {
              Map<String,Object> resultMap = new HashMap<>();
              resultMap.put("sex",person.getSex());
              resultMap.put("data",......);
              resultList.add(resultMap);
         }    
     
         return resultList;

    剩下的自己补,你的name好像还是一个集合啊!
      

  2.   

    用gson把对象转换成json字符串
      

  3.   

    其实就是将一个list,转换成一个json,但是json是要再合并一次的。就像表格里相同的数据会合并单元格一样。
      

  4.   

    其实把list转换成json简单啊就是不知道json合并怎么做
      

  5.   

    @RequestMapping("/testJson.do")
    public String testJson(HttpServletResponse response) throws IOException {
    JSONObject job = new JSONObject();
    List<User> users = new ArrayList<User>();
    for (int i = 0; i < 3; i++) {
    List<Dept> depts = new ArrayList<Dept>();
    for (int j = 0; j < 3; j++) {
    Dept dept = new Dept(Long.valueOf(j), String.valueOf(j));
    depts.add(dept);
    }
    users.add(new User(Long.valueOf(i), String.valueOf(i), "123456", depts));
    }
    job.put("usersList", users);
    response.getWriter().println(job.toString());
    return null;
    }