使用json数组时获取列表中的最后一个元素

时间:2013-02-28 06:05:52

标签: json list jsp

将列表传递给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);
 } 

2 个答案:

答案 0 :(得分:0)

  1. ResultSet是一个迭代器,对于第一列只迭代一次。
  2. List-Object仅创建一次并且对json进行多次攻击。即使您存储第一列的列表,也可以在第二列中更改此第一列值。
  3. 试试这个:

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

    BTW:json

    不支持重复的columnNames

答案 1 :(得分:0)

最后我得到了答案......这是我的代码

试 {HashMap map = new HashMap();                     List list = new 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