javaweb的ResultSet不使用类返回json字符串

前言

之前一直在写javaweb,当然也只是初步接触而已

按照我学的东西来看的话,在后台向前端返回数据的时候,每次要返回一个json字符串都需要首先新建一个类,然后存储到List,最后再转换为json字符串,比较占篇幅

那么既然是返回的是json字符串,为什么不直接拼接一个字符串出来返回给前端呢,需要做的就是多做一些循环,多加一些引号和冒号罢了

说干就干,于是就有了这个函数:

javaweb的ResultSet不使用类返回json字符串

package com.backController;

import java.io.IOException;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.Arrays;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.tomcat.util.buf.StringUtils;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller

public class URLTest2 {

	public String getResultString(String sqlstr) throws SQLException {
		DBDao.getConnection();  // 根据自己的Dao层修改
		ResultSet rs = DBDao.selectSql(sqlstr);
		ResultSetMetaData rsmd = rs.getMetaData();  // 获取表格基础信息		
		int cnum = rs.getMetaData().getColumnCount();  // 获取列数
		String[] title = new String[cnum];  // title存储表头
		for(int i=0;i<cnum;i++) {
			title[i] = rsmd.getColumnName(i+1);
		}
		
		//获取行数,很遗憾,rsmd里面没有行数
		rs.last();
		int rnum = rs.getRow();
		rs.first();  //first指的是第一行,也就是说接下来如果要读取rs的话,需要先读取,再执行rs.next()

		String[] return_content = new String[rnum];	 // 以一行数据为一个字符串保存的数组	
		int readrow = 0;  // 每次读取的一行,因为java的数组没有append的功能,需要手动赋值
		do{
			// 使用字符串拼接获取返回字符串			
			String[] row_content = new String[cnum];  // 列数,每一个元素就是一个格子的 key:value
			for(int i=1;i<=cnum;i++) {
				String key = "\""+title[i-1]+"\"";
				String value = "\""+rs.getString(i)+"\"";
				String kv = key+":"+value;				
				row_content[i-1] = kv;				
			}
			String row_str = "{"+StringUtils.join(Arrays.asList(row_content), ',')+"}";
			return_content[readrow]=row_str;
			readrow+=1;
		}while(rs.next());
		String return_str = "["+StringUtils.join(Arrays.asList(return_content), ',')+"]";
		return return_str;
	}
	@RequestMapping(value="/test2")
	public void test(HttpServletRequest request, HttpServletResponse response) throws SQLException, IOException {
		response.setContentType("aplication/json;charset=UTF-8");
		String sqlstr = "select * from user_management";
		response.getWriter().write(getResultString(sqlstr));
	}
}

前端亲测可以直接使用eval直接解析成json对象。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值