【问题标题】:Getting last elements in list while uing json array使用json数组时获取列表中的最后一个元素
【发布时间】:2013-02-28 06:05:52
【问题描述】:

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

【问题讨论】:

  • 什么是变量rs?

标签: json list jsp


【解决方案1】:
  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 不支持重复的列名

【讨论】:

    【解决方案2】:

    终于我得到了答案……这是我的代码

    试试 { HashMap 映射 = 新的 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
    

    【讨论】:

      猜你喜欢
      • 2016-09-29
      • 1970-01-01
      • 2018-08-25
      • 1970-01-01
      • 2021-10-22
      • 2020-06-15
      • 2017-08-27
      • 2017-11-08
      • 2017-02-18
      相关资源
      最近更新 更多