我试图用json表示数据库中的一些信息,json结构创建得很好,但不知道为什么要覆盖数据库中的最后一条记录。所以在我的json上,我得到了最后一个值,而不是值。
为此,我使用主值和迭代中的ResultSet。在这个迭代中,我得到了相关的信息,所以这些数据嵌套在json上。这是我的代码:
JSONObject json = new JSONObject();
ResultSet sections = null;
ResultSet questions = null;
JSONObject section = new JSONObject();
JSONObject question = new JSONObject();
Db d = new Db();
d.makeJDBCConnection();
sections = d.getSections();
while(sections.next()){
section.put("name", sections.getString("sectionName"));
section.put("id", sections.getInt("id"));
questions = d.getQuestions(sections.getInt("id"));
while(questions.next()){
// id, statement
question.put("id", questions.getInt("id"));
question.put("statement", questions.getString("statement"));
section.put("questions", question);
}
}
json.append("section", section);
return Response.status(200).entity(json.toString()).build();
我检查了调试并得到了所有记录但是在json响应中我得到了最后一个结果。
答案 0 :(得分:3)
1。)初始化section
和question
内部循环
2。)在section
内json
添加outter
,同时循环播放
JSONObject json = new JSONObject();
ResultSet sections = null;
ResultSet questions = null;
JSONObject section = null;
JSONObject question = null;
Db d = new Db();
d.makeJDBCConnection();
sections = d.getSections();
while(sections.next()){
section = new JSONObject();
// initialize new one inside every iteration
section.put("name", sections.getString("sectionName"));
section.put("id", sections.getInt("id"));
questions = d.getQuestions(sections.getInt("id"));
while(questions.next()){
// id, statement
question = new JSONObject();
// initialize new one inside every iteration
question.put("id", questions.getInt("id"));
question.put("statement", questions.getString("statement"));
section.put("questions", question);
}
json.append("section", section);
// ^^ add every created record
// should be inside the loop
}
答案 1 :(得分:0)
您反复更新相同的“问题”和“部分”对象。你应该每次通过“while(sections.next())”循环创建一个新的“section”对象,并为“question”创建相同的东西。