簡體   English   中英

如何使用ResultSet中的兩個字段創建JSON數組?

[英]How to create JSON Array using two fields from a ResultSet?

我想生成一個對象的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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM