【发布时间】:2017-03-22 22:16:24
【问题描述】:
我正在使用(tomcat、jsp、postgres、googlemap 等)开发一个 java web 项目。 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 对象 [{"":""}] 的格式。但我不知道如何解决它。
【问题讨论】:
-
使用 JSON.parse 有什么问题?这是有效的 json,它应该解析得很好。 (我使用jsonlint.com检查了json的有效性)
-
我将如何使用 JSON.parse 函数来获取,让我们说图像路径并将其保存在名为 img 的 var 中?
-
var json = '' for(var i = 0; i
-
当我尝试上面的代码时,json.length 给出了字符串的总长度,850 并循环遍历每个字符并在警告框中显示“未定义”。我不知道为什么。
标签: javascript json postgresql list hashmap