layui 数据表格 java后台,(java转换json) layui表格数据 java获得数据转换为json

(如果你觉得这里不好看,你可以直接往下拖到你进入正题部分)

在进入正题前,先来讲讲自己的经历,用layui框架来建立后台用户数据管理时,获得数据出现了难题,以前开发接口用别人的,没想到现在自己也要开发接口,刚开始很难(个人觉得,可能自己太笨了),不知道从哪里下手,于是进入百度搜索,就连用什么关键词搜索都不知道,但是我知道,按照自己的想法来,开始我这这么搜索的:layui表格数据 java获得数据转换为json,  结果还是可以搜索出来的:

layui 数据表格 java后台,(java转换json) layui表格数据 java获得数据转换为json_第1张图片

但是,当点进去的时候,有好多都不满足自己,不是看不懂,就是嫌弃太长,(这可不是好习惯),然后根据一篇做了一下,捣鼓了一下,还是不行,没办法,又网上找资料,根据前面搜索,以及自己实践,知道该怎么搜索了,那就是自己搜索:java转换为json 效果但是也不是很好,但是根据自己的不断搜索,不断实践,知道了gson包,在线文档,     包下载地址,包下载地址进去自己搜索,

layui 数据表格 java后台,(java转换json) layui表格数据 java获得数据转换为json_第2张图片

如图就是它了,把它导入项目,然后我们继续,刚开始我是这样写的代码:(部分代码不全,不过没关系,我会详细讲解,这里只是展示)

			JsonObject json = new JsonObject();
			JsonArray jsonDateArray = new JsonArray();
			JsonObject jsonDate2 = new JsonObject();
		
			json.addProperty("code", 0);
			json.addProperty("msg", "");
			json.addProperty("count", 1000);
			while(rs.next()){
				//得到结果集(rs)的结构信息,比如字段数、字段名等。
				ResultSetMetaData rsmd = (ResultSetMetaData) rs.getMetaData();
				//返回此 ResultSet对象中的列数。 
				int icolnum = rsmd.getColumnCount();
				for(int i= 1;i<= icolnum;i++){
					 //转换为json 类型
					if(rs.getString(i).equals("user")){
						jsonDate2.addProperty(rsmd.getColumnName(i).toString(),"普通用户");
					}else if(rs.getString(i).equals("admin_1")){
						jsonDate2.addProperty(rsmd.getColumnName(i).toString(),"一级管理员");
					}else if(rs.getString(i).equals("admin_2")){
						jsonDate2.addProperty(rsmd.getColumnName(i).toString(),"二级管理员");
					}else if(rs.getString(i).equals("SuperAdmin")){
						jsonDate2.addProperty(rsmd.getColumnName(i).toString(),"超级管理员");
					}else{
						jsonDate2.addProperty(rsmd.getColumnName(i).toString(), rs.getString(i));
					}
					
				}                                                                                                                                                                                                                                                                                                                                                
				jsonDateArray.add(jsonDate2);
				System.out.println(jsonDateArray);
			}
			
			json.add("data", jsonDateArray);
			return json;

jsonDateArray.add(jsonDate2);  这里,就是把数据库里获得的数据保存到jsonDateArray里面去,但是重复了,也就是出现数据后面添加的吧前面的重复掉了。

如上图,由于截图有限,看不出什么效果,简单的说就是数据到最后都变成一样的了。到现在还没找到解决的办法,现在猜想是因为用列表名作为key,可能因为这个重复(个人猜测,如果你知道,感谢你的留言,我也想知道答案),在解决这个问题中,可以说是花了一半天的时间,还是没有解决,没办法,改变思路:

————————————————————————————————————————————————————————

你进入正题了

————————————————————————————————————————————————————————

先看代码:*(一个方法完整方法,最后返回的就是json 格式了)

/*
	 * 查询用户表,用于后台管理用户
	 */
	public JsonObject select_(){
		Connection con = null;   //定义引用
		Statement stmt = null;
		ResultSet rs = null;
		try {
			/*
			 * 一、得到连接
			 */
			con = JdbcUtils_v10.getConnection();
			/*
			 * 二、准备模块
			 */
			String sql = "select id,login,email,jurisdiction,sex,signature,experience,count,joinTime from user";
			PreparedStatement pstmt = con.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS);
			/*
			 * 三、为pstmt中的问号赋值
			 */
			
			/*
			 * 四、执行
			 */
			rs = pstmt.executeQuery();
			/*
			 * 五、把rs 转换为User类型
			 */
			if(rs == null) {
				return null;
			}
			Gson gson = new Gson();
			HashMap hm = new HashMap();
			JsonArray jsonarray = new JsonArray();
			JsonObject json = new JsonObject();
			String Shm = null;
			json.addProperty("code", 0);
			json.addProperty("msg", "");
			json.addProperty("count", 1000);
			while(rs.next()){
				//得到结果集(rs)的结构信息,比如字段数、字段名等。
				ResultSetMetaData rsmd = (ResultSetMetaData) rs.getMetaData();
				//返回此 ResultSet对象中的列数。 
				int icolnum = rsmd.getColumnCount();
				for(int i= 1;i<= icolnum;i++){
					 //转换为json 类型
					if(rs.getString(i).equals("user")){
						hm.put(rsmd.getColumnName(i).toString(),"普通用户");
					}else if(rs.getString(i).equals("admin_1")){
						hm.put(rsmd.getColumnName(i).toString(),"一级管理员");
					}else if(rs.getString(i).equals("admin_2")){
						hm.put(rsmd.getColumnName(i).toString(),"二级管理员");
					}else if(rs.getString(i).equals("SuperAdmin")){
						hm.put(rsmd.getColumnName(i).toString(),"超级管理员");
					}else{
						hm.put(rsmd.getColumnName(i).toString(), rs.getString(i));
					}
				}  
				jsonarray.add(gson.toJsonTree(hm));
				System.out.println(jsonarray);
			}
			
			json.add("data", jsonarray);
			System.out.println(json);
			
			return json;			
		}catch (Exception e) {
			throw new RuntimeException(e); 	
		}finally{
			//关闭
			try {
				if(rs != null)rs.close();
				if(stmt != null)stmt.close();
				if(con != null)con.close(); //必须要关
			}catch(Exception e) {
				throw new RuntimeException(e);
			}			
		}	
	}

以上代码讲解:(由于是完成测试可以了,直接就来写文档了)

要注意几个地方,

HashMap hm = new HashMap();

这里就是吧获得到的数据通过HashMap保存起来,然后通过gson.toJsonTree(hm)转换为对象。然后添加在jsonarray里面。

------------------

jsonarray.add(gson.toJsonTree(hm))

gson.toJsonTree(HashMap)     //返回类型是JsonElement   
gson.toJson(HashMap)  //返回类型是 String

上面红色两句一定要明白,他们返回的类型,刚开始我使用的时toJson 返回的时字符串,返回添加在jsonarray里去,出现了转义字符,且还是字符串,如图:

是不是感觉自己头大了,我也是,在这里就得说说看文档的重要性了,以及英语的重要性(显然,我两个都不满足,又浪费了很多时间,)如果你看文档了,就知道用哪个方法来解决了。

就是它:gson.toJsonTree(HashMap)     //返回类型是JsonElement   

我们再来看看:

是不是一切都解决了。简单吧。

接口里是这样的:通过out.print(json)在浏览器输出,然后layui框架里用这个接口就可以了。(layui 文档讲的很详细,一定要仔细,不然很浪费时间,别走我走过的路)

layui 数据表格 java后台,(java转换json) layui表格数据 java获得数据转换为json_第3张图片

在这里,文章讲的也差不多了。可能还有一些地方没有表达的清楚,你可以加我qq363491343 我们共同讨论学习,

最后就是提个醒(这篇文章主要讲java  转换  json ):

layui 表格数据时,从接口获得的数据名称一定要和

layui 数据表格 java后台,(java转换json) layui表格数据 java获得数据转换为json_第4张图片一样哦。

 

 

 

微信公众号:

 

你可能感兴趣的:(javaWeb,java)