如何在REST Response中以JSON Arrray格式检索结果(How to retrieve the result as JSON Arrray format in REST Response)
我试图从数据库中检索数据,并以JSON数组的形式返回'Response'。 但现在我在浏览器中得到如下结果,这不是正确的JSON数组格式。 我如何以JSON数组的形式接收数据?
{"{\n \"id\": 14,\n \"name\": \"Test Doom Post\",\n \"email\": \"test@test1.com\...JDK 1.7 Jersey(jaxrs-ri-2.25.1)Gson
//以下是我的Get方法:
@Path("/register") public class JSONService { @GET @Path("/get") @Produces("application/json") @Consumes("application/json") public Response getRegisterInJSON() { JSONObject requestedJSON = new JSONObject(); try { Class.forName("com.mysql.jdbc.Driver"); SoccerUtils dbConnection = new SoccerUtils(); Connection conn = dbConnection.getWeekendDBConnection(); PreparedStatement stmt = conn.prepareStatement("SELECT ID, FIRST_NAME, EMAIL FROM mycoolmap.weekendsoccer_login"); ResultSet rs = stmt.executeQuery(); while(rs.next()) { RegisterPlayer playerObj = new RegisterPlayer(); playerObj.setId(rs.getInt("ID")); playerObj.setName(rs.getString("FIRST_NAME")); playerObj.setEmail(rs.getString("EMAIL")); Gson gson = new GsonBuilder().setPrettyPrinting().create(); String json1 = gson.toJson(playerObj); requestedJSON.put(json1, json1); System.out.println(requestedJSON); } } catch (Exception e) { e.printStackTrace(); } finally { } return Response.status(Status.OK).entity(requestedJSON.toString()).build(); }//注册Player POJO类:
@XmlRootElement public class RegisterPlayer implements Serializable { private int id; private String name; private String email; public RegisterPlayer() { } public RegisterPlayer(int id, String name, String email) { super(); this.id =id; this.name = name; this.email = email; } public int getId() { return id; } public void setId(int id) { this.id =id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } @Override public String toString() { return "RegisterPlayer[id=" + id +", name=" + name +", email="+ email +"]"; } }I am trying to retrieve the data from database and return them in 'Response' as JSON array. But now I am getting the result in browser as below, which is not the correct JSON array format. How can I receive the data as JSON Array ?
{"{\n \"id\": 14,\n \"name\": \"Test Doom Post\",\n \"email\": \"test@test1.com\...JDK 1.7 Jersey (jaxrs-ri-2.25.1) Gson
//Following is my Get method below:
@Path("/register") public class JSONService { @GET @Path("/get") @Produces("application/json") @Consumes("application/json") public Response getRegisterInJSON() { JSONObject requestedJSON = new JSONObject(); try { Class.forName("com.mysql.jdbc.Driver"); SoccerUtils dbConnection = new SoccerUtils(); Connection conn = dbConnection.getWeekendDBConnection(); PreparedStatement stmt = conn.prepareStatement("SELECT ID, FIRST_NAME, EMAIL FROM mycoolmap.weekendsoccer_login"); ResultSet rs = stmt.executeQuery(); while(rs.next()) { RegisterPlayer playerObj = new RegisterPlayer(); playerObj.setId(rs.getInt("ID")); playerObj.setName(rs.getString("FIRST_NAME")); playerObj.setEmail(rs.getString("EMAIL")); Gson gson = new GsonBuilder().setPrettyPrinting().create(); String json1 = gson.toJson(playerObj); requestedJSON.put(json1, json1); System.out.println(requestedJSON); } } catch (Exception e) { e.printStackTrace(); } finally { } return Response.status(Status.OK).entity(requestedJSON.toString()).build(); }// Register Player POJO class:
@XmlRootElement public class RegisterPlayer implements Serializable { private int id; private String name; private String email; public RegisterPlayer() { } public RegisterPlayer(int id, String name, String email) { super(); this.id =id; this.name = name; this.email = email; } public int getId() { return id; } public void setId(int id) { this.id =id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } @Override public String toString() { return "RegisterPlayer[id=" + id +", name=" + name +", email="+ email +"]"; } }最满意答案
正如罗斯在上述评论中所建议的,我创建了一个列表,添加对象并返回列表。 它按预期工作。
/Created a 'registerPlayerList' List List<RegisterPlayer> registerPlayerList = new ArrayList<RegisterPlayer>(); // Intialiaze the RegisterPlayer class RegisterPlayer playerObj = new RegisterPlayer(); //set all the values into the object playerObj.setId(rs.getInt("ID")); playerObj.setName(rs.getString("FIRST_NAME")); playerObj.setEmail(rs.getString("EMAIL")); ...... //add the playerObj to the created registerPlayerList registerPlayerList.add(playerObj); // return the list return registerPlayerList ;As advised by Roman in above comment, I have created a list, add the object and return the list. It worked as expected.
/Created a 'registerPlayerList' List List<RegisterPlayer> registerPlayerList = new ArrayList<RegisterPlayer>(); // Intialiaze the RegisterPlayer class RegisterPlayer playerObj = new RegisterPlayer(); //set all the values into the object playerObj.setId(rs.getInt("ID")); playerObj.setName(rs.getString("FIRST_NAME")); playerObj.setEmail(rs.getString("EMAIL")); ...... //add the playerObj to the created registerPlayerList registerPlayerList.add(playerObj); // return the list return registerPlayerList ;更多推荐
发布评论