DB_listYear  Class    Student
------------------------
2013   No1     zhangsan
2013   No1     lisi
2013   No2     wangwu
2012   No1     zhaoliu
2012   No1     tianqi数据存储在一个Map类型的List中。转换前JSON格式:[{"Year":"2013","Class":"No1","Student":"zhangsan"}]转换后按以下格式显示JSON字符串{"info":[{"Year":"2013","ClassList":[{"Class":"No1","StudentList":[{"Student":"zhangsan"}]}]}]}
求集合转换过程:由原来的Map格式List 转为 一个MapJSON

解决方案 »

  1.   

    List<Map<String, Object>> list=new ArrayList<Map<String,Object>>();
    for(int i=0;i<3;i++){
    Map<String, Object> map=new HashMap<String, Object>();
    if(i==0){
    map.put("Year", 2013);
    }else if(i==1){
    map.put("Class", "No1");
    }else{
    map.put("Student", "zhangsan");
    }
    list.add(map);
    }
    Map<String, Object> map1=new HashMap<String, Object>();

    List<Map<String, Object>> studentList=new ArrayList<Map<String,Object>>();
    Map<String,Object> studentMap=new HashMap<String, Object>();
    studentMap.put("Student", list.get(2).get("Student"));
    studentList.add(studentMap);
    map1.put("Class", list.get(1).get("Class"));
    map1.put("StudentList", studentList);
    List<Map<String, Object>> classList=new ArrayList<Map<String,Object>>();
    classList.add(map1);
    Map<String,Object> classMap=new HashMap<String, Object>();
    classMap.put("Year", list.get(0).get("Year"));
    classMap.put("ClassList", classList);
    List<Map<String, Object>> yearList=new ArrayList<Map<String,Object>>();
    yearList.add(classMap);
    map3.put("info", yearList);
      

  2.   


    数据库是5条数据,要将它变成两条
    重组出来的数据用json格式是这样
    想得到这样的结果:
    {
        "info": "
     {"Year":"2013","ClassList":"{
            "Class": "No1",
            "StudentList": "{"Student":"zhangsan"},{"Student":"lisi"}"
        },
        {
            "Class": "No2",
            "StudentList": "{"Student":"wangwu"}"
        }"}
     {"Year":"2012","ClassList":"{
            "Class": "No1",
            "StudentList": "{"Student":"zhaoliu"},{"Student":"tianqi"}"
        }"}
     "
    }
      

  3.   


    数据库是5条数据,要将它变成两条
    重组出来的数据用json格式是这样
    想得到这样的结果:
    {
        "info": "
     {"Year":"2013","ClassList":"{
            "Class": "No1",
            "StudentList": "{"Student":"zhangsan"},{"Student":"lisi"}"
        },
        {
            "Class": "No2",
            "StudentList": "{"Student":"wangwu"}"
        }"}
     {"Year":"2012","ClassList":"{
            "Class": "No1",
            "StudentList": "{"Student":"zhaoliu"},{"Student":"tianqi"}"
        }"}
     "
    }
    我给你的能输出你要的json对象。你只要把数据代入进去就行。
      

  4.   


    数据库是5条数据,要将它变成两条
    重组出来的数据用json格式是这样
    想得到这样的结果:
    {
        "info": "
     {"Year":"2013","ClassList":"{
            "Class": "No1",
            "StudentList": "{"Student":"zhangsan"},{"Student":"lisi"}"
        },
        {
            "Class": "No2",
            "StudentList": "{"Student":"wangwu"}"
        }"}
     {"Year":"2012","ClassList":"{
            "Class": "No1",
            "StudentList": "{"Student":"zhaoliu"},{"Student":"tianqi"}"
        }"}
     "
    }
    我给你的能输出你要的json对象。你只要把数据代入进去就行。
    我能明白你的意思
    上面的只是个实例,数据库中存放了很多数据
    不能简单的通过,1,2,3的方式便利出来我写了一层的循环,帮忙把第二层弄出来
    谢谢
    Map map1 = new HashMap();
    Map map2 = new HashMap();
    Map map3 = new HashMap();
    Map map4 = new HashMap();
    Map map5 = new HashMap();

    map1.put("year", 2013);
    map1.put("class", "No1");
    map1.put("student","zhangsan");

    map2.put("year", 2013);
    map2.put("class", "No1");
    map2.put("student","lisi");

    map3.put("year", 2013);
    map3.put("class", "No2");
    map3.put("student","wangwu");

    map4.put("year", 2012);
    map4.put("class", "No1");
    map4.put("student","zhaoliu");

    map5.put("year", 2012);
    map5.put("class", "No1");
    map5.put("student","tianqi");




    List<Map> list = new ArrayList<Map>();
    list.add(map1);
    list.add(map2);
    list.add(map3);
    list.add(map4);
    list.add(map5);

    Map result = new HashMap();
         List<Map> dbMapList = list;
         List<Map> resultMapList = new ArrayList<Map>();
        
         String s = new String();
         for(Map dbMap : dbMapList) {
        
         Map existMap = null;
         for(Map resultMap : resultMapList) {
         int newYear = (Integer) resultMap.get("year");
         int oldYear = (Integer) dbMap.get("year");
        
         if(newYear == oldYear) {
         existMap = resultMap;
         break;
         }else {
         continue;
         }
         }
        
         Map classMap = new HashMap();
         classMap.put("class", dbMap.get("class"));
        
             
         if(existMap != null) {
         List l = (List) existMap.get("ClassList");
         l.add(classMap);
         }else {
         Map mapTmp = new HashMap();
         mapTmp.put("year", dbMap.get("year"));
         List<Map> classMapList = new ArrayList<Map>();
         classMapList.add(classMap);
         mapTmp.put("ClassList", classMapList);
         resultMapList.add(mapTmp);
         }
         }
         result.put("info", resultMapList);
        
         JSONObject json=JSONObject.fromObject(result);
         System.out.println(json.toString());
      

  5.   

    Array.asList(object[])
    ListDemo.toArray();
      

  6.   

    Array.asList(object[])
    ListDemo.toArray();
      

  7.   

    Array.asList(object[])
    ListDemo.toArray();