0

リストをjsonオブジェクトに渡している間、すべての要素を読み取ることができません..最後に保存したリストのみが表示されます

 List<String> list = new ArrayList<String>();   
 for (int i=0 ; i<columnCount ; i++)
 {
     while (rs.next())
     {
         list.add(rs.getString(rsMetaData.getColumnName(i+1)));
     }
     json.put(rsMetaData.getColumnName(i+1), list);

     //json.accumulate(rsMetaData.getColumnName(i+1), list);
 } 
4

2 に答える 2

0

最後に私は答えを得ました...これは私のコードです

{ HashMap map= new HashMap(); を試してください。リスト リスト = 新しい ArrayList();

                int col = 0;
                while (rs.next())
                 {
                    values = new JSONObject(); 
                    for (int i=0 ; i<columnCount ; i++)
                     {
                         values.put(rsMetaData.getColumnName(i+1),rs.getString(rsMetaData.getColumnName(i+1)));
                     }      
                     list.add(col, values.toString());
                     System.out.println(list.toString());
                     col++;
                 }
                json.put("gaea", list);



            }//try block end
于 2013-03-05T10:13:12.203 に答える
0
  1. ResultSet は、最初の列に対して 1 回だけ繰り返される反復子です。
  2. List-Object は一度だけ作成され、複数の json に保存されます。最初の列のリストを保存しても、この最初の列の値を 2 番目の列で変更します。

これを試して:

while (rs.next()) {
    for (int i=0; i < columnCount; i++) {
        String columnName = rsMetaData.getColumnName(i+1);
        List<String> list = new ArrayList<String>();
        if (json.get(columnName) == null) {
            json.put(columnName, list);
        } else {
            list = (List<String>)json.get(columnName);
        }
        list.add(rs.getString(columnName));

    }
}

ところで: 重複する columnNames は json ではサポートされていません

于 2013-02-28T07:04:33.990 に答える