java - 如何使用结果集中的两个字段创建 JSON 数组?

标签 java mysql json jsp arraylist

我想生成一个对象的 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 类,它将保存 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);

关于java - 如何使用结果集中的两个字段创建 JSON 数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48598669/

相关文章:

java - class.getResource (".") 在 Tomcat 服务器中返回 null 但在独立的 Java 程序上工作正常

mysql - Rails + MySQL 中的发票编号

javascript - 解析来自 Google Places API 的 JSON 结果

java - 当我发送推送时 android 应用程序崩溃

php - 在 Auth 组件 Cakephp 中关闭密码哈希

javascript - 将 PHP JSON 编码的数组打印到 JavaScript 并对其进行解码,会产生错误

java - 如何从 ListView 和 SharedPreferences 中删除特定项目?

java - 在为此目标 Web 运行测试用例之前,如何使用多线程启动 Web 应用程序?

java - 禁用 spring boot 执行器 "health-component"和 "health-component-instance"

mysql - mysql 中的嵌套游标但显示语法错误