servlet中查询出的list转换为json格式输出

servlet与dao中需要用到

List<Map<String, Object>>

List集合中的对象是一个Map对象,而这个Map对象的键是String类型,值是Object类型
List以Map接口对象为列表对象。
Map以String为键,以Object为值。
List里只能放Map类型的对象,而这个Map类型的对象又只能放以String类型为键,以Object类型为值的键值对。

DAO:

public class AllTeacherDao extends DBHelper{
	public List<Map<String, Object>> getAll(){
		List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();  
		String sql = "select id,teachername,password,tel from teacher ";
		ResultSet rs = this.executeQuery(sql);
		try {
			while(rs.next()){
				HashMap<String, Object> map = new HashMap<String, Object>();  
	            map.put("id", rs.getInt("id"));   
	            map.put("teachername", rs.getString("teachername"));  
	            map.put("password", rs.getString("password"));  
	            map.put("tel", rs.getString("tel"));  
	            list.add(map);  
				
			}
		} catch (SQLException e) {
			// TODO 自动生成的 catch 块
			e.printStackTrace();
		}finally {
			this.close();
			
		}
		System.out.print("AllTeacherDao执行");
		return list;
	}
}

servlet:

使用JSONStringer,需要导入json的6个jar

JSONStringer 类用来快速方便地创建一个Json文本,创建出来的文本完全符合Json文本的语法,没有多余的空格键,所以生成的文本可以直接被储存或者传输,每一个JSONStringer的实例都能创建一个JSON文本。

一个JSONStringer的实例提供了一个value方法来向文本中添加键值,提供了一个key方法,key方法必须在value方法之前调用,用来向文本中添加键,有一个array和endArray方法用来制作和捆绑数组值,也有object方法和endObject方法用来制作和捆绑object值。每一个方法都返回一个JSONStringer的实例,允许有串联结构。例如:

myString = new JSONStringer()
    .object()
        .key("JSON").value("Hello, World!")
    .endObject()
    .toString;

上面这个实例创建了如下的字符串:

 {"JSON":"Hello, World!"}

第一个方法必须是object 或者array,没有方法用来添加逗号和冒号,JSONStringer自动为你添加,object或者是array最多可以嵌套20层。

有的时候,使用JSONStringer类比使用JSONObject 类更容易创建一个Json文本

构造方法:

JSONStringer()——-构造一个新的JSONStringer 对象

方法:

array()——开始添加一个array

endArray()——结束一个array

object()——开始添加一个object

endObject()——结束一个object

key(String s)——添加一个键

value系列方法——添加一个键值

toString()——返回一个JSON文本的字符串


protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

	super.service(req, resp);
	AllTeacherDao dao= new AllTeacherDao();
	List<Map<String, Object>> list = dao.getAll();  
	JSONStringer stringer = new JSONStringer();  
	 stringer.array();  
     for (int i = 0; i < list.size(); i++) {  
         Map<String, Object> teacherlist= list.get(i);  
         try {  
             stringer.object();  
             Iterator it = teacherlist.keySet().iterator();  //迭代器,返回一个所有key值的迭代遍历
             while (it.hasNext()) {  
                 Object key = it.next();  
                 stringer.key((String) key).value(teacherlist.get(key));  
             }  
             stringer.endObject();  
         } catch (JSONException e) {  
             // TODO Auto-generated catch block  
             e.printStackTrace();  
         }  

     }  
     stringer.endArray();    
     PrintWriter out = resp.getWriter();
     out.print(stringer.toString());  
	
	
	System.out.println("servlet执行");
	

}

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值