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”]}]}
答案 0 :(得分:0)
尝试使用已定义的类而不是arraylist。
设置对象属性后,从&#34; Employer&#34;传递实例化对象。作为toJson()方法的参数。
答案 1 :(得分:0)
您每次都会将同一名员工添加到列表中,然后随着时间更新其字段。在循环中创建一个新的员工对象:
while(rs.next())
{
emp=new Employee();
...