我正在使用jquery從一個servlet返回一個基本的JSON對象,這是工作絕對好,但我無法格式化JSON實際上填充圖表。谷歌圖表JSON問題 - Java
這是調用這個servlet代碼:
google.load("visualization", "1", {packages:["corechart"]});
google.setOnLoadCallback(drawChart);
function drawChart() {
$.getJSON('SearchServlet', {servletAction: 'getSummary'}, function(json) {
var data = new google.visualization.DataTable(json);
var chart = new google.visualization.PieChart(document.getElementById('summaryPieChart'));
chart.draw(data, {backgroundColor:'#e9f1f4',width: '90%', height: '90%', legend:{position:'none'}, chartArea:{width:"90%",height:"90%"},colors:['#94d784','#d78484']});
});
}
Servlet的一面,我使用創建JSON代碼:
private int positive;
private int negative;
private int neutral;
public DataTable createResultsJSON(){
DataTable data = new DataTable();
ArrayList<ColumnDescription> cols = new ArrayList<ColumnDescription>();
cols.add(new ColumnDescription("summary", ValueType.TEXT, "Summary"));
cols.add(new ColumnDescription("result", ValueType.NUMBER, "Result"));
data.addColumns(cols);
try {
data.addRowFromValues("positive", positive, true);
data.addRowFromValues("negative", negative, true);
data.addRowFromValues("neutral", neutral, true);
} catch (TypeMismatchException e) {
System.out.println("Invalid type!");
}
return data;
}
將其轉化爲一個使用JSON:
String resultJson = new Gson().toJson(createResultsJSON());
的結果的一個例子JSON是:
{
"columns":[
{"id":"summary","type":"TEXT","label":"Summary","pattern":""},
{"id":"result","type":"NUMBER","label":"Result","pattern":""}],
"columnIndexById":{"result":1,"summary":0},
"rows":[
{"cells":[{"value":{"value":"positive"}},{"value":{"value":362.0}}]},
{"cells":[{"value":{"value":"negative"}},{"value":{"value":302.0}}]},
{"cells":[{"value":{"value":"neutral"}},{"value":{"value":349.0}}]}],
"warnings":[]
}
然而,根據谷歌圖JSON的規格,它應該是應該像類似以下內容:
{
"cols": [
{"id":"","label":"Topping","pattern":"","type":"string"},
{"id":"","label":"Slices","pattern":"","type":"number"}
],
"rows": [
{"c":[{"v":"Mushrooms","f":null},{"v":3,"f":null}]},
{"c":[{"v":"Onions","f":null},{"v":1,"f":null}]},
{"c":[{"v":"Olives","f":null},{"v":1,"f":null}]},
{"c":[{"v":"Zucchini","f":null},{"v":1,"f":null}]},
{"c":[{"v":"Pepperoni","f":null},{"v":2,"f":null}]}
]
}
我已經嘗試了許多不同的方法來格式化正確的JSON在服務器端,我仍然堅持,我敢肯定這是一個快速和簡單的修復,所以任何幫助表示讚賞。
當查詢獲取的JSON,並試圖處理它,它說:「表沒有列」
感謝
生成的JSON有什麼問題?格式?這並不重要。 – 2013-03-22 13:11:36
無論出於何種原因,當返回JSON數據時,儘管格式看起來幾乎與規範幾乎相同,但Google Charts仍在說「表格沒有列」。 – richardb 2013-03-22 13:17:27