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
  1. ResultSet 是一个迭代器,只针对第一列迭代一次。
  2. List-Object 只创建一次,并多次存储到 json。即使您存储第一列的列表,您也会在第二列中更改此第一列的值。

试试这个:

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));

    }
}

顺便说一句:json 不支持重复的 columnNames

于 2013-02-28T07:04:33.990 回答
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 回答