无法获得json的所有值
我试图使用rest webservice将从数据库获取的值返回到前端视图,但问题是它只返回json值的一行(第一行)
我有这样的json:
{"jobName":"NASA Scientist","jobPrimarySkill":null,"jobRole":"JOB_ROLE","jobDesignation":"JOB_EXP","jobDescription":"Sample 2","jobSalaryRange":"JOB_POSITIONS","jobExp":"JOB_SAL_RANGE","jobPositions":"JOB_POSTEDBY","jobPostedBy":null} {"jobName":"NASA Scientist","jobPrimarySkill":null,"jobRole":"JOB_ROLE","jobDesignation":"JOB_EXP","jobDescription":"JOB_DESCRIPTION","jobSalaryRange":"JOB_POSITIONS","jobExp":"JOB_SAL_RANGE","jobPositions":"JOB_POSTEDBY","jobPostedBy":null} {"jobName":"Web developer","jobPrimarySkill":null,"jobRole":"JOB_ROLE","jobDesignation":"JOB_EXP","jobDescription":"XYZ 123","jobSalaryRange":"JOB_POSITIONS","jobExp":"JOB_SAL_RANGE","jobPositions":"JOB_POSTEDBY","jobPostedBy":null} {"jobName":"Web developer","jobPrimarySkill":null,"jobRole":"JOB_ROLE","jobDesignation":"JOB_EXP","jobDescription":"JOB_DESCRIPTION","jobSalaryRange":"JOB_POSITIONS","jobExp":"JOB_SAL_RANGE","jobPositions":"JOB_POSTEDBY","jobPostedBy":null} {"jobName":"Programmer","jobPrimarySkill":null,"jobRole":"JOB_ROLE","jobDesignation":"JOB_EXP","jobDescription":"JOB_DESCRIPTION","jobSalaryRange":"JOB_POSITIONS","jobExp":"JOB_SAL_RANGE","jobPositions":"JOB_POSTEDBY","jobPostedBy":null} {"jobName":"Programmer","jobPrimarySkill":null,"jobRole":"JOB_ROLE","jobDesignation":"JOB_EXP","jobDescription":"JOB_DESCRIPTION","jobSalaryRange":"JOB_POSITIONS","jobExp":"JOB_SAL_RANGE","jobPositions":"JOB_POSTEDBY","jobPostedBy":null}
它只将第一行json值返回到前端而不是全部。 我将从数据库中获取的值添加到List
并在webservice中公开它,如下所示:
public class FetchJobSummaryDAO { public List getJobSummaries() { JobSummaries jobSummaries = new JobSummaries(); List jobSummaryList = new ArrayList(); try { Connection con = DBConnection.getConnection(); String query = "select JOB_NAME,JOB_DESCRIPTION,JOB_ROLE,JOB_PRIMARY_SKILL,JOB_DESIGNATION,JOB_EXP,JOB_SAL_RANGE, JOB_POSTEDBY from TBL_JOBPOSTING"; PreparedStatement pst = con.prepareStatement(query); ResultSet rs = pst.executeQuery(); ResultSetMetaData rsmd = rs.getMetaData(); int columnsNumber = rsmd.getColumnCount(); while (rs.next()) { jobSummaries.setJobName(rs.getString("JOB_NAME")); jobSummaries.setJobDescription(rs.getString("JOB_DESCRIPTION")); jobSummaries.setJobRole(rs.getString("JOB_ROLE")); jobSummaries.setJobPrimarySkill(rs.getString("JOB_PRIMARY_SKILL")); jobSummaries.setJobDesignation(rs.getString("JOB_DESIGNATION")); jobSummaries.setJobExp(rs.getString("JOB_EXP")); jobSummaries.setJobSalaryRange(rs.getString("JOB_SAL_RANGE")); jobSummaries.setJobPostedBy(rs.getString("JOB_POSTEDBY")); jobSummaryList.add(jobSummaries); for (int i = 1; i 1) { System.out.print(", "); } String columnValue = rs.getString(i); System.out.print(rsmd.getColumnName(i) + " " + columnValue); } System.out.println(""); } } catch (SQLException ex) { Logger.getLogger(FetchJobSummaryDAO.class.getName()).log(Level.SEVERE, null, ex); } return jobSummaryList; }
网络服务:
@Path("/FetchJobSummary") public class FetchJobSummaryService { FetchJobSummaryDAO dao = new FetchJobSummaryDAO(); @GET @Produces(MediaType.APPLICATION_JSON) public List fetch() { List js = dao.getJobSummaries(); for(int i=0; i< js.size(); i++){ System.out.println(js); //prints values with same hashcode } return dao.getJobSummaries(); } }
当我打印列表时,它打印具有相同哈希码的值,所以我猜它只获得一个json值
[com.RTH.WebServices.JobSummaries@691c5809, com.RTH.WebServices.JobSummaries@691c5809, com.RTH.WebServices.JobSummaries@691c5809, com.RTH.WebServices.JobSummaries@691c5809, com.RTH.WebServices.JobSummaries@691c5809, com.RTH.WebServices.JobSummaries@691c5809] [com.RTH.WebServices.JobSummaries@691c5809, com.RTH.WebServices.JobSummaries@691c5809, com.RTH.WebServices.JobSummaries@691c5809, com.RTH.WebServices.JobSummaries@691c5809, com.RTH.WebServices.JobSummaries@691c5809, com.RTH.WebServices.JobSummaries@691c5809] [com.RTH.WebServices.JobSummaries@691c5809, com.RTH.WebServices.JobSummaries@691c5809, com.RTH.WebServices.JobSummaries@691c5809, com.RTH.WebServices.JobSummaries@691c5809, com.RTH.WebServices.JobSummaries@691c5809, com.RTH.WebServices.JobSummaries@691c5809] [com.RTH.WebServices.JobSummaries@691c5809, com.RTH.WebServices.JobSummaries@691c5809, com.RTH.WebServices.JobSummaries@691c5809, com.RTH.WebServices.JobSummaries@691c5809, com.RTH.WebServices.JobSummaries@691c5809, com.RTH.WebServices.JobSummaries@691c5809] [com.RTH.WebServices.JobSummaries@691c5809, com.RTH.WebServices.JobSummaries@691c5809, com.RTH.WebServices.JobSummaries@691c5809, com.RTH.WebServices.JobSummaries@691c5809, com.RTH.WebServices.JobSummaries@691c5809, com.RTH.WebServices.JobSummaries@691c5809] [com.RTH.WebServices.JobSummaries@691c5809, com.RTH.WebServices.JobSummaries@691c5809, com.RTH.WebServices.JobSummaries@691c5809, com.RTH.WebServices.JobSummaries@691c5809, com.RTH.WebServices.JobSummaries@691c5809, com.RTH.WebServices.JobSummaries@691c5809]
改变这样
public class FetchJobSummaryDAO { public List getJobSummaries() { JobSummaries jobSummaries = null; List jobSummaryList = new ArrayList (); try { Connection con = DBConnection.getConnection(); String query = "select JOB_NAME,JOB_DESCRIPTION,JOB_ROLE,JOB_PRIMARY_SKILL,JOB_DESIGNATION,JOB_EXP,JOB_SAL_RANGE, JOB_POSTEDBY from TBL_JOBPOSTING"; PreparedStatement pst = con.prepareStatement(query); ResultSet rs = pst.executeQuery(); ResultSetMetaData rsmd = rs.getMetaData(); int columnsNumber = rsmd.getColumnCount(); while (rs.next()) { jobSummaries = new JobSummaries() jobSummaries.setJobName(rs.getString("JOB_NAME")); jobSummaries.setJobDescription(rs.getString("JOB_DESCRIPTION")); jobSummaries.setJobRole(rs.getString("JOB_ROLE")); jobSummaries.setJobPrimarySkill(rs.getString("JOB_PRIMARY_SKILL")); jobSummaries.setJobDesignation(rs.getString("JOB_DESIGNATION")); jobSummaries.setJobExp(rs.getString("JOB_EXP")); jobSummaries.setJobSalaryRange(rs.getString("JOB_SAL_RANGE")); jobSummaries.setJobPostedBy(rs.getString("JOB_POSTEDBY")); jobSummaryList.add(jobSummaries); for (int i = 1; i <= columnsNumber; i++) { if (i > 1) { System.out.print(", "); } String columnValue = rs.getString(i); System.out.print(rsmd.getColumnName(i) + " " + columnValue); } System.out.println(""); } } catch (SQLException ex) { Logger.getLogger(FetchJobSummaryDAO.class.getName()).log(Level.SEVERE, null, ex); } return jobSummaryList;
}
我认为有两个问题:1)你需要在每次循环getJobSummaries时创建一个新实例2)你需要每次打印出不是列表的每一行
问题出在这里:
List js = dao.getJobSummaries(); for(int i=0; i< js.size(); i++){ System.out.println(js); //prints the whole list every time }
您每次打印出列表。 我想你想得到列表中的项目 - 比如:
List js = dao.getJobSummaries(); for (Object j : js) { System.out.println(j); //prints each item in the list }