我想生成一个对象的 ArrayList,使其成为 jquery UI 自动完成的源。但是,如果我在条目中摆弄附加值,我的以下函数会抛出错误
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"];
最佳答案
IMO,手动操作/构造 JSON 并不是一个好主意。相反,您应该使用像 Jackson 这样的库来完成这项工作。
您得到的只是连接的String
,它被添加到List
中。现在,为了获得您所期望的结果,您需要创建一个 POJO 类,它将保存 empid
和 empName
。然后,创建该对象的列表并将其传递给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);
关于java - 如何使用结果集中的两个字段创建 JSON 数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48598669/