My Spring Controller类看起来像这样
@SuppressWarnings("rawtypes")
@RequestMapping(value = "/cityGridView", method = RequestMethod.GET)
public @ResponseBody
List showLineChart(Map<String, Object> map,
HttpServletRequest request, HttpServletResponse response) {
List<Object> rows = new ArrayList<Object>();
List<MapTable> list = contactService.fin();
for (MapTable table : list) {
List<Object> dataRow = new ArrayList<Object>(1);
dataRow.add(table.getSRDate());
dataRow.add(table.getNumberOfSR());
rows.add(dataRow);
}
return rows;
}
在我的jsp中我处理这样的响应。 (似乎问题在这里?)
<div id="chart1" style="width: 800px;height: 500px" ></div>
<script type="text/javascript">
$(document).ready(function(){
var ajaxDataRenderer = function(url, plot, options) {
var ret = null;
$.ajax({
async: false,
url: url,
dataType:"json",
success: function(data) {
ret = data;
}
});
return ret;
};
var jsonurl = 'cityGridView.html';
var today = new Date();
var plot1 = $.jqplot('chart1', jsonurl, {
title:'Data Point Highlighting',
dataRenderer: ajaxDataRenderer,
dataRendererOptions: {
unusedOptionalUrl: jsonurl
},
axes:{
xaxis:{
label: "SR_DATES",
'numberTicks' : 7,
min: '2012-10-01',
max: '2012-10-07',
renderer:$.jqplot.DateAxisRenderer,
rendererOptions:{tickRenderer:$.jqplot.CanvasAxisTickRenderer},
tickInterval:'1 day',
tickOptions:{
formatString:'%Y-%#m-%#d'
}
},
yaxis:{
label: "SR COUNT",
tickOptions:{
formatString:'%d'
},
min:10,
max:30
}
},
highlighter: {
show: true,
sizeAdjust: 7.5
},
cursor: {
show: true
}
});
});
</script>
我的JSON就像这样
[[ “2012-10-01”,15.0],[ “2012年10月2日”,20.0],[ “2012年10月3日”,25.0],[ “2012年10月4日”,18.0 ],[ “2012年10月5日”,22.0],[ “2012年10月6日”,24.0]]
这里显示我的MapTable类
public class MapTable {
private Date SRDate;
private int numberOfSR;
public Date getSRDate() {
return SRDate;
}
public void setSRDate(Date sRDate) {
SRDate = sRDate;
}
public int getNumberOfSR() {
return numberOfSR;
}
public void setNumberOfSR(int numberOfSR) {
this.numberOfSR = numberOfSR;
}
}
contactService.fin();调用Service Classes&amp;最后它在DAO课程中。 数据也正确地来自上面我提到的数组。这是我的DAO类
public List<MapTable> fin(){
@SuppressWarnings("unchecked")
List<MapTable> dashboardBeanList = jdbcTemplate
.query("select trunc(ASSIGNED_datetime) as SR_DATE, count(*) as COUNT " +
"from sbl_service_request_v " +
"where SR_TYPE ='Complaint' " +
"and DATE_COMMITED is not null " +
"and ASSIGNED_DIVISION in ('CSO','IT_IVR') " +
"and trunc(ASSIGNED_datetime) >= sysdate -30 " +
"group by trunc(ASSIGNED_datetime) " +
"order by trunc(ASSIGNED_datetime)",
new Object[] {},
new RowMapper() {
public MapTable mapRow(ResultSet rs, int rowNum)
throws SQLException {
MapTable dashboardBean=new MapTable();
dashboardBean.setSRDate(rs.getDate("SR_DATE"));
dashboardBean.setNumberOfSR(rs.getInt("COUNT"));
return dashboardBean;
}
});
return dashboardBeanList;
}
答案 0 :(得分:0)
您的预期与实际JSON数据有两种不同之处,您没有说明哪些差异很重要。但我会首先处理"rows":
位,因为它代表了JSON结构差异(与数据值差异相反)。
您的实际JSON输出包含"rows":
属性,因为您从控制器返回了一个Grid
对象 - 其中有一个名为rows
的字段填充了您的列表列表。如果您只是希望JSON包含列表列表,请从控制器返回:return rows
。
您的日期格式也不同,因此我会先查看MapTable .getSRDate()
的getter方法作为第一步 - 您的问题中没有足够的信息/代码来直接解决此问题。