如何使用JSONObject创建一个JSONArray,其中包含java中数据库表的所有值

时间:2017-06-02 11:28:46

标签: java json

我从数据库表中获取详细信息,该表包含JAVA中的3行。  我正在使用JSONarray和JSONObject,如下所示

JSONObject jsonObject = new JSONObject();
JSONObject mainjsonObject = new JSONObject();
JSONArray ja=new JSONArray();

表中的数据按以下方式放到jsonObject中:

String qry="select * from details";
ResultSet res = select .executeQuery(qry);
while(res.next){

String Name=res.getString("name");
.
.

jsonObject.put("Name", Name);

.

.

ja.put(jsonObject);

}



mainjsonObject.put("PERSONAL DETAILS",ja);

我应该得到输出json如下:

{
"PERSONAL DETAILS": [
    {
      " name": "abc",
      "age": "4",
      "gender": "F",
      "Place": "abc1"
    },
    {
      " name": "xyz",
      "age": "3",
      "gender": "M",
      "Place": "abc2"
    }


]

}

但我在两者中获得相同的值:

{

"PERSONAL DETAILS": [

    {

     " name": "abc",

     "age": "4",

     "gender": "F",

      "Place": "abc1"

    },

    {

   " name": "abc",

   "age": "4",

   "gender": "F",

   "Place": "abc1"

    }


]

}

请帮我解决一下。我需要将表中的所有值作为JSON格式的数组

2 个答案:

答案 0 :(得分:3)

您需要在循环中创建新的JSONObject,否则最后的记录将随处显示

while(res.next()){

    String Name=res.getString("name");
    jsonObject = new JSONObject();
    // ^^^^^^^^
    jsonObject.put("Name", res.getString(1));
    jsonObject.put("age", res.getString(2));
    jsonObject.put("gender", res.getString(3));
    jsonObject.put("Place", res.getString(4));
    ja.put(jsonObject);
 }

答案 1 :(得分:2)

问题在于您反复使用相同的JSONObject。这基本上是Map

您需要做的是创建一个 new JSONObject实例,并将其放入数组中进行每次迭代:

JSONObject obj;
while (rs.next()) {
    obj = new JSONObject();
    // fill in obj
    ja.put(obj);
}