2013-05-04 86 views
0

我一直在试图填补我的谷歌图表动态地,像这样的例子: https://developers.google.com/chart/interactive/docs/php_example谷歌图 - 填充与JSON

我用这依赖于DataTable类及其他:

<dependency> 
    <groupId>com.google.visualization</groupId> 
    <artifactId>visualization-datasource</artifactId> 
    <version>1.1.1</version> 
</dependency> 

这是DataTable类的API: https://developers.google.com/chart/interactive/docs/dev/dsl_javadocs/com/google/visualization/datasource/datatable/DataTable

我使用Java的HttpServlet包含此代码(例如)来填充数据表:

DataTable dataTable = new DataTable(); 
dataTable.addColumn(new ColumnDescription("uur", ValueType.TEXT, "Uur")); 
dataTable.addColumn(new ColumnDescription("aantal", ValueType.NUMBER, "Aantal spellen"));   
try { 
    dataTable.addRowFromValues("1", 5, true); 
    dataTable.addRowFromValues("2", 9, true); 
    dataTable.addRowFromValues("3", 17, true); 
} catch (TypeMismatchException ex) { 
    Logger.getLogger(VerkrijgChartDataServlet.class.getName()).log(Level.SEVERE, null, ex); 
} 

我也包括在此使其返回JSON:

response.setContentType("application/json"); 

然后用GSON我将其转换为一个JSON字符串:

new Gson().toJson(dataTable); 

这将返回格式的字符串:

{ 
    "columnIndexById" : {"aantal":1, "uur":0}, 
    "columns" : [ 
     {"id":"uur","label":"Uur","pattern":"","type":"TEXT"}, 
     {"id":"aantal","label":"Aantal spellen","pattern":"","type":"NUMBER"} 
    ], 
    "rows" : [ 
     {"cells":[{"value":{"value":"1"}},{"value":{"value":5.0}}]}, 
     {"cells":[{"value":{"value":"2"}},{"value":{"value":9.0}}]}, 
     {"cells":[{"value":{"value":"3"}},{"value":{"value":17.0}}]}, 
    ], 
    "warnings" : [] 
} 

但是Google Chart却说:'Table has no col UMS“。 谷歌的例子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}]} 
     ] 
} 

有没有人有什么我做错了的想法?我需要做其他事吗? Thanx提前。

回答

0

有点晚了,但晚一点再好一点。我想我知道你的问题的答案。

你其实知道答案。在你的问题中,你给出了一个Google Chart JSON示例。 JSON字符串需要开始与

{"cols":...} 

,而你的JSON字符串,由GSON呈现,与

{"ColumnIndexById":{...}, 
"columns":... 
} 

开始。如果你传递一个JSON字符串到谷歌的DataTable的可视化,然后其结构需要看起来完全像谷歌示例。因此,而不是“列”,它需要是“cols”。

0

您可以使用API​​的JsonRenderer

JsonRenderer.renderJsonResponse(
    DataSourceParameters.getDefaultDataSourceParameters(), null, data 
)