我希望以Json格式从我的表中获取3条记录,但是需要重复

时间:2014-07-08 12:59:22

标签: mysql eclipse tomcat gson

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    response.setContentType("text/html;charset=UTF-8");
    PrintWriter out = response.getWriter();
   try{

       Employee emp=new Employee();
       DBrelation db=new DBrelation();
       Connection cn=db.getConnect();
       PreparedStatement ps=cn.prepareStatement("select * from sbh");
       ResultSet rs=ps.executeQuery();

      Gson gson=new Gson();     

      ArrayList<Object> al=new ArrayList<Object>();
      ArrayList<Object> list=new ArrayList<Object>();

       while(rs.next())
       {
        emp.setEmp_Id(rs.getInt(1));      
        emp.setEmp_Name(rs.getString(2)); 
        emp.setDesignation(rs.getString(3));
        list.clear();
        list.add(rs.getString(4));list=null;
        emp.setSkills(list);
        al.add(emp); 

       }


      String st=gson.toJson(al);  

      out.println("{\"sbh\":"+st+"}");

        cn.close();
}

catch(Exception e)
{ e.printStackTrace();}


}
}

输出我得到:{“sbh”:[{“Emp_Id”:1003,“Emp_Name”:“詹姆斯”,“指定”:“区域经理”,“技能”:[“oracle,MySQL,SQL Server “]},{”Emp_Id“:1003,”Emp_Name“:”james“,”指定“:”区域经理“,”技能“:[”oracle,MySQL,SQL Server“]},{”Emp_Id“:1003 ,“Emp_Name”:“詹姆斯”,“指定”:“区域经理”,“技能”:[“oracle,MySQL,SQL Server”]}}}

需要输出:{“sbh”:[{“Emp_Id”:1001,“Emp_Name”:“jamee”,“指定”:“asst Manager”,“技能”:[“oracle”]},{“Emp_Id “:1002,”Emp_Name“:”jos“,”指定“:”gen Manager“,”技能“:[”MySQL“]},{”Emp_Id“:1003,”Emp_Name“:”johns“,”指定“ :“总经理”,“技能”:[“SQL Server”]}]}

2 个答案:

答案 0 :(得分:0)

尝试使用已定义的类而不是arraylist。

设置对象属性后,从&#34; Employer&#34;传递实例化对象。作为toJson()方法的参数。

答案 1 :(得分:0)

您每次都会将同一名员工添加到列表中,然后随着时间更新其字段。在循环中创建一个新的员工对象:

   while(rs.next())
   {
    emp=new Employee();
    ...