如何从数据库中获取数据,hashmap,将hashi hashmap转换为JSONObject列表并在javascript中使用它

时间:2017-03-22 22:16:24

标签: javascript json postgresql list hashmap

我正在使用一个java web项目(tomcat,jsp,postgres,googlemap等)。 postgres数据库表有7列,其中一列是地理数据类型。所以我使用Hashmap检索数据并将其放在ArrayList中,并使用以下方法接收ResultSet对象。

  public ArrayList resultSetToArrayList(ResultSet rs) throws SQLException{

  ResultSetMetaData md = rs.getMetaData();
  int columns = md.getColumnCount();
  ArrayList list = new ArrayList();
  ArrayList<HashMap<String, Object>> dataMap = new 
  ArrayList<HashMap<String,Object>>();

  while (rs.next()){
  HashMap row = new HashMap(columns);
        for(int i=1; i<=columns; ++i){                          
            row.put(md.getColumnName(i),rs.getObject(i));
        }
        list.add(row);
    }
  return list;
}

在我的doGet servlet方法中,我有以下代码将arraylist转换为JSONObject列表,然后将响应转发给jsp。

ArrayList<HashMap<String, Object>> hashmapData =  
newArrayList<HashMap<String, 
Object>>();
hashmapData = api.resultSetToArrayList(rs);//api is an instance  
                            of my APIService class that contains the method
List<JSONObject> jsonObj = new ArrayList<JSONObject>();

for(HashMap<String, Object> data : hashmapData) { 
        JSONObject obj = new JSONObject(data);
        jsonObj.add(obj);
}
request.setAttribute("data",jsonObj);

              //Disptching request

RequestDispatcher dispatcher =
request.getRequestDispatcher("displayallobjects.jsp");

              if (dispatcher != null){
              dispatcher.forward(request, response);
              } 
  .....
   ....//rest of the code
  }

一切正常,我可以通过以下格式的请求对象检索.jsp文件中的JSONObject列表:

  <script>
        var jsondata = '<%=request.getAttribute("data") %>'
  ....
  </script>

 [{"id":49,"location":"POINT(43.5729914065888 -79.7675657272339)", 
 "questid":3,"image":"images\/science.jpg","type":"science"}, 
 {"id":51,"location":"POINT(43.5725872088145 -79.7640466690063)", 
 "questid":5,"image":"images\/math.jpg","type":"math"}, 
 {"id":52,"location":"POINT(43.5730224986129 -79.7701406478882)", 
 "questid":2,"image":"images\/math.jpg","type":"math"}, 
 {"id":53,"location":"POINT(43.5742972577808 -79.7683811187744)", 
 "questid":1,"image":"images\/english.jpg","type":"english"}, 
 {"id":54,"location":"POINT(43.5707838318471 -79.7665357589722)", 
 "questid":9,"image":"images\/science.jpg","type":"science"}]

现在,我需要使用此数据在地图上创建标记。我似乎无法以任何方式解析这些数据。我尝试了JSON.parse(jsondata),以及javascript中的其他关系函数,比如stringify等,但没有任何作用。

如何将每个项目的值保存到javascript数组变量中,因此我遍历数组并使用正确的图标在适当的位置显示标记。??????请帮助,我花了很多时间试图解决这个问题。什么都行不通。

我认为问题是json对象[{“”:“”}]的格式。但我不知道如何解决它。

1 个答案:

答案 0 :(得分:0)

*********我修复了问题********* 我只需要通过执行json = JSON.parse(json)将json变量转换回JSON对象;确保js不像字符串一样对待它。为我修复它现在我可以通过使用obj.image循环它来获取图像。感谢Ehren Murdick花时间阅读和回复。