返回json即可
时间: 2023-06-30 22:26:38 浏览: 97
好的,下面是生成曲线图并返回JSON数据的示例代码:
```java
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.DefaultCategoryDataset;
import org.json.JSONObject;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.OutputStream;
public class ChartGenerator {
public static void generateLineChart(HttpServletResponse response) throws IOException {
// 创建数据集
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(1.0, "Series 1", "Category 1");
dataset.addValue(2.0, "Series 1", "Category 2");
dataset.addValue(3.0, "Series 1", "Category 3");
dataset.addValue(4.0, "Series 1", "Category 4");
dataset.addValue(5.0, "Series 1", "Category 5");
// 创建绘图对象
JFreeChart chart = ChartFactory.createLineChart(
"Line Chart", // 图表标题
"Category", // X轴标题
"Value", // Y轴标题
dataset, // 数据集
PlotOrientation.VERTICAL, // 图表方向
true, // 是否显示图例
true, // 是否显示工具提示
false // 是否显示URL
);
chart.getCategoryPlot().getRangeAxis().setUpperBound(6.0); // 设置Y轴范围
// 将JFreeChart对象转换为JSON格式
JSONObject json = new JSONObject();
json.put("chartTitle", chart.getTitle().getText());
json.put("xAxisLabel", chart.getCategoryPlot().getDomainAxis().getLabel());
json.put("yAxisLabel", chart.getCategoryPlot().getRangeAxis().getLabel());
JSONObject datasetJson = new JSONObject();
for (int i = 0; i < dataset.getRowCount(); i++) {
String seriesName = dataset.getRowKey(i).toString();
for (int j = 0; j < dataset.getColumnCount(); j++) {
String category = dataset.getColumnKey(j).toString();
double value = dataset.getValue(i, j).doubleValue();
if (!datasetJson.has(seriesName)) {
datasetJson.put(seriesName, new JSONObject());
}
datasetJson.getJSONObject(seriesName).put(category, value);
}
}
json.put("dataset", datasetJson);
// 将生成的JSON数据返回给客户端
response.setContentType("application/json");
OutputStream out = response.getOutputStream();
out.write(json.toString().getBytes());
out.flush();
out.close();
}
}
```
以上代码会生成一张包含5个数据点的折线图,并将图表标题、X轴标题、Y轴标题、数据集等信息转换为JSON格式返回给客户端。你可以根据自己的需求修改数据集和绘图属性,生成不同类型的曲线图,并将生成的JSON数据返回给前端。
阅读全文