用java构建json会覆盖值

tzdcorbm  于 2021-07-12  发布在  Java
关注(0)|答案(2)|浏览(334)

我试图用json表示数据库中的一些信息,json结构创建得很好,但不知道为什么要覆盖数据库中的最后一条记录。所以在我的json上,我只读取了最后一个值,而不是所有的值。
为此,我使用一个来自主值的结果集和一个迭代。在这个迭代中,我得到了相关的信息,所以这个数据嵌套在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响应中,我只得到了最后一个结果。

368yc8dk

368yc8dk1#

1.)初始化 section 以及 question 内环
2.)添加 section 进入 json 内部 outter while循环

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
          }
mjqavswn

mjqavswn2#

重复更新同一个“问题”和“部分”对象。每次都应该通过“while(sections.next())”循环和“question”创建一个新的“section”对象

相关问题