2017-06-02 44 views
2

我從包含3行JAVA的數據庫表中獲取詳細信息。 我使用JSONarray和JSONObject的如下如何使用JSONObject創建一個JSON對象,其中包含來自java中數據庫表的所有值

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格式的數組

回答

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); 
} 
+0

你打我吧:P除了有一些代碼片段從失蹤你的例子:) – fge

+0

感謝您的回覆@Pavneet_Singh。但是,你可以明確指出如何在上面做到這一點。笏值給循環 – Leeza

+0

@Leeza新創建的JSONObject,如下所示,從'resultset'中獲取值並將其放入'jsonObject'中參考 –

2

的問題是,你是一遍又一遍地重複使用相同的JSONObject。這基本上是Map

你需要做的是建立一個JSONObject實例,並把它在陣列中的每個迭代:

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

謝謝@ fge。有效。 – Leeza

相關問題