如何使用ResultSet中的两个字段创建JSON数组?

时间:2018-02-03 14:54:36

标签: java mysql json jsp arraylist

我想生成一个对象的ArrayList,使其成为jquery UI Autocomplete的源代码。但是,如果我在条目

中使用其他值,那么我的以下函数就会抛出错误
public ArrayList getUserData()
{

    ArrayList buffer = new ArrayList();
          try{
            Class.forName("com.mysql.jdbc.Driver");                     
            Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/chbs?" + "user=root&password=xxx");                              
            Statement stmt=conn.createStatement();
            ResultSet rs = stmt.executeQuery("select * from users");
            while(rs.next())
            {
            buffer.add('"{' + rs.getString("users.Employee_ID") +  '"' + rs.getString("users.Employee_Name") + '}"');
        }
            return buffer;
        }
         catch (Exception e) {
            e.printStackTrace();
         }
 return buffer;
}

我想要这样的结果

 data = [
    {
        empid:"xyz111",
        empName:"Hello"
    },
{
        empid:"xyz222",
        empName:"Hi"
    }
];

但是,我正在

data = ["xyz111"Hello","xyz222"Hi"];

1 个答案:

答案 0 :(得分:2)

IMO,手动操作/构建JSON并不是一个好主意。相反,您应该使用像Jackson这样的库来完成这项工作。

您获得的只是String连接List的{​​{1}}。现在,为了获得您期望的内容,您需要创建一个POJO类,它将保留empidempName。然后,创建此对象的列表并将其传递给ObjectMapper

示例:

 ObjectMapper mapper = new ObjectMapper();
 List<Employee> empList = new ArrayList<>();

 while(rs.next())
 {
    Employee emp = new Employee();
    emp.setEmpId(Integer.parseInt(rs.getString("users.Employee_ID")));
    emp.setEmpName(rs.getString("users.Employee_Name"));
    empList.add(emp);
 }
 //Object to JSON in String
 String jsonInString = mapper.writeValueAsString(empList);