关于list集合转为Map的数据操作问题?

hello4j 2013-06-27 01:31:20

DB_list

Year 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 转为 一个Map
...全文
382 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
hello4j 2013-07-01
  • 打赏
  • 举报
回复
自己先顶一下!
静山晚风 2013-07-01
  • 打赏
  • 举报
回复
Array.asList(object[]) ListDemo.toArray();
静山晚风 2013-07-01
  • 打赏
  • 举报
回复
Array.asList(object[]) ListDemo.toArray();
静山晚风 2013-07-01
  • 打赏
  • 举报
回复
Array.asList(object[]) ListDemo.toArray();
hello4j 2013-07-01
  • 打赏
  • 举报
回复
引用 7 楼 wei125669477 的回复:
[quote=引用 6 楼 hello4j 的回复:] [quote=引用 2 楼 wei125669477 的回复:] 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);
数据库是5条数据,要将它变成两条 重组出来的数据用json格式是这样
引用 2 楼 wei125669477 的回复:
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);
想得到这样的结果: { "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"}" }"} " } [/quote] 我给你的能输出你要的json对象。你只要把数据代入进去就行。[/quote] 我能明白你的意思 上面的只是个实例,数据库中存放了很多数据 不能简单的通过,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());




cainiao学java 2013-06-28
  • 打赏
  • 举报
回复
引用 6 楼 hello4j 的回复:
[quote=引用 2 楼 wei125669477 的回复:] 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);
数据库是5条数据,要将它变成两条 重组出来的数据用json格式是这样
引用 2 楼 wei125669477 的回复:
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);
想得到这样的结果: { "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"}" }"} " } [/quote] 我给你的能输出你要的json对象。你只要把数据代入进去就行。
hello4j 2013-06-27
  • 打赏
  • 举报
回复
引用 2 楼 wei125669477 的回复:
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);
数据库是5条数据,要将它变成两条 重组出来的数据用json格式是这样
引用 2 楼 wei125669477 的回复:
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);
想得到这样的结果: { "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"}" }"} " }
u010834737 2013-06-27
  • 打赏
  • 举报
回复
好复杂。。。
wasdasdfqwer 2013-06-27
  • 打赏
  • 举报
回复
就是先把数据遍历拿出来 再重组把
cainiao学java 2013-06-27
  • 打赏
  • 举报
回复
System.out.println(map3.toString());
cainiao学java 2013-06-27
  • 打赏
  • 举报
回复
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);
Acesidonu 2013-06-27
  • 打赏
  • 举报
回复
好复杂。。。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧