我正在使用一个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对象[{“”:“”}]的格式。但我不知道如何解决它。
答案 0 :(得分:0)
*********我修复了问题********* 我只需要通过执行json = JSON.parse(json)将json变量转换回JSON对象;确保js不像字符串一样对待它。为我修复它现在我可以通过使用obj.image循环它来获取图像。感谢Ehren Murdick花时间阅读和回复。