我从数据库表中获取详细信息,该表包含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格式的数组
答案 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);
}