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”:“ james”,“ Designation”:“ Zonal Manager”,“ Skills”:[“ oracle,MySQL,SQL Server”]} ,{“ Emp_Id”:1003,“ Emp_Name”:“ james”,“ Designation”:“区域管理器”,“技能”:[“ oracle,MySQL,SQL Server”]},{“ Emp_Id”:1003,“ Emp_Name “:” james“,” Designation“:”区域管理员“,”技能“:[” oracle,MySQL,SQL Server“]}]}

所需的输出:{“ sbh”:[{“ Emp_Id”:1001,“ Emp_Name”:“ jamee”,“ Designation”:“资产管理器”,“技能”:[“ oracle”]},{“ Emp_Id”:1002 ,“ Emp_Name”:“ jos”,“名称”:“ gen Manager”,“技能”:[“ MySQL”]},{“ Emp_Id”:1003,“ Emp_Name”:“ johns”,“名称”:“首席经理”,“技能”:[“ SQL Server”]}]}

最佳答案

您每次都将同一名员工添加到列表中,然后继续进行更新。在循环中创建一个新的雇员对象:

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

关于mysql - 我想以Json格式从表中获取3条记录,但重复,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24632516/

10-10 16:35
查看更多