Использует native Java аннотации для представления класса Option
ECharts, предоставляя функцию преобразования аннотаций в JSON.
Как это работает
1
Внутри используются аннотации для пометки биновых классов
2
Аннотация-процессор преобразует в дерево JSON
3
Используется сериализация JSON пакета (например, fastjson/gson) для вывода на фронтенд-страницу
Создано на основе ECharts 3.0
Опция определение
Общее количество более 3700 аннотаций! Здесь сгенерированные аннотации могут использоваться только для помечания полей класса Bean
На основе различных типов атрибута Type листовых узлов JSON дерева, более 3700 аннотаций разделены на шесть различных типов:Тип JS | Тип Java | По умолчанию | Конец файла | Примечание |
---|---|---|---|---|
boolean | boolean | false | Boolean | Булевый тип |
Цвет | int | 0 | Hex | Web цвета отображаются как целое число Java, поскольку они обычно представлены шестнадцатеричной системой, конец файла — Hex |
Число | Number | 0 | Number | Абстрактный класс Number является родителем основных типов данных int и double, все преобразуются в double |
Строка | String | "" | String | Тип строки |
Массив | List | Нет | Array | Все массивы преобразуются в generics List |
Функция | Object | Нет | Function | Поскольку Java не поддерживает тип функции, требуется реализовать метод toJSONString интерфейса JSONAware для вывода строки функции |
* | Object | Нет | All | См. Тип Function По количеству параметров аннотации можно разделить на два типа: |
Маркерные аннотации не имеют параметров. Если помеченный элемент равен null
или имеет значение по умолчанию, процессор аннотаций ничего не выведет.
Аннотация с одним значением имеет один параметр. Тип этого параметра связан с последним словом имени аннотации.
Из-за того что многие листовые узлы могут иметь несколько типов, один листовой узел может создать несколько аннотаций, но процессор аннотаций будет выводить эти аннотации как одну аннотацию.Если параметр аннотации с одним значением не пустой, а помеченный элемент не равен null
и не имеет значения по умолчанию, процессор аннотаций будет выводить значение аннотированного элемента.## Обработчик аннотаций AnnotationProcessor
SingleChart
и DuplexChart
используются для маркировки Java-классов, которые должны быть преобразованы в JSON.
Разница между этими двумя аннотациями заключается в том, как они обрабатывают аннотации внутри series
, dataZoom
и visualMap
.
Первая аннотация объединяет повторяющиеся аннотации;
вторая использует три аннотации (AddSeries
, AddDataZoom
и AddVisualMap
) для извлечения аннотаций series
, dataZoom
и visualMap
из файла, помеченного SingleChart
, и добавляет их в текущий файл, помеченный DuplexChart
.
Параметр exportTo
по умолчанию пустой. Если он отличается от значения по умолчанию, то "exportTo.json" записывается на диск.
Параметр extendsFrom
по умолчанию пустой. Если он отличается от значения по умолчанию, то он наследуется от "extendsFrom.json".
Параметр exportTo
по умолчанию пустой. Если он отличается от значения по умолчанию, то "exportTo.json" записывается на диск.
Параметр extendsFrom
по умолчанию пустой. Если он отличается от значения по умолчанию, то он наследуется от "extendsFrom.json".
Эта аннотация используется только для поля Field
аннотации DuplexChart
. Если поле не равно null
и его исходный файл был помечен аннотацией SingleChart
, то аннотации внутри series
будут извлечены и добавлены в DuplexChart
.###### AddDataZoom
Эта аннотация используется только для поля field
аннотации DuplexChart
. Если поле не равно null
и его исходный файл был помечен аннотацией SingleChart
, то аннотации внутри dataZoom
будут извлечены и добавлены в DuplexChart
.###### AddVisualMap
Эта аннотация используется только для поля Field
аннотации DuplexChart
. Если поле не равно null
и его исходный файл был помечен аннотацией SingleChart
, то аннотации внутри visualMap
будут извлечены и добавлены в DuplexChart
.
phraseSingleChart
и phraseDuplexChart
были объединены в parseChart
, поэтому теперь нет необходимости различать их.
1
Добавьте EChartsAnnotation в проект
maven
<dependency>
<groupId>cn.edu.gdut.zaoying</groupId>
<artifactId>EChartsAnnotation</artifactId>
<version>1.0.2</version>
<type>pom</type>
</dependency>
gradle
compile('cn.edu.gdut.zaoying:EChartsAnnotation:1.0.2')
jar
Скачать Jar пакет
Добавление LineChart (диаграммы линий)
@SingleChart(экспортироватьК = "templates/lineChart.json")
public class LineChart {
@NameString
String name;
@DataArray
double[] data;
@cn.edu.gdut.zaoying.Option.xAxis.NameString("горизонтальная ось")
String xAxisName;
@TypeString("category")
String type;
@cn.edu.gdut.zaoying.Option.xAxis.DataArray
int[] xAxisData = new int[]{1, 2, 3, 4};
@cn.edu.gdut.zaoying.Option.yAxis.NameString("вертикальная ось")
String yAxisName;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double[] getData() {
return data;
}
public void setData(double[] data) {
this.data = data;
}
}
```}
Пример ранее использовался с отсутствием xAxis
и yAxis
, что делает его неработоспособным в соответствии с требованиями ECharts.
3
Вызов графического процессора
public class EChartsTest {
public static void main(String[] args) {
LineChart lineChart = new LineChart();
lineChart.name = "линейный график один";
lineChart.data = new double[]{1, 2, 3, 4};
Object json = EChartsAnnotationProcessor.parseChart(lineChart);
System.out.print(JSON.toJSONString(json));
}
}
4
Создание более сложной комбинированной диаграммы
import cn.edu.gdut.zaoying.Option.series.bar.DataArray;
import cn.edu.gdut.zaoying.Option.series.bar.NameString;
import cn.edu.gdut.zaoying.SingleChart;
``````java
@SingleChart
public class BarChart {
@NameString
String name;
@DataArray
double[] data;
}
######CombinedChart комбинированная диаграмма
@DuplexChart
public class CombinedChart {
@TextString
String title;
@BackgroundColorHex(value = 0xfff)
int backgroundColor;
@AddSeries
LineChart lineChart;
@AddSeries
LineChart lineChart2;
@AddSeries
BarChart barChart;
}
``````markdown
public void объединенныйГрафик(String заголовок) {
this.title = заголовок;
линейныйГрафик = new LineChart();
линейныйГрафик.name = "Линейный график";
линейныйГрафик.data = new double[]{1, 2, 3, 4};
линейныйГрафик2 = new LineChart();
линейныйГрафик2.name = "Линейный график 2";
линейныйГрафик2.data = new double[]{3, 6, 8, 9};
столбчатыйГрафик = new BarChart();
столбчатыйГрафик.name = "Столбчатый график";
столбчатыйГрафик.data = new double[]{5, 6, 7, 8};
}
}
5
Вызов графического процессора
public class TestECharts {
public static void main(String[] args) {
Object json = EChartsAnnotationProcessor.parseChart(new CombinedChart("Объединённый график"));
System.out.println(JSON.stringToJSON(json));
}
}
``````markdown
`6` Использование наследования
##### Напишите view.json
```javascript
{
"title": {"text": "Объединенный график"},
"backgroundColor": "#fff"
}
@ДвойнойГрафик(наследуетсяОт = "view.json")
публичный клас ОбъединённыйГрафик {
@ДобавитьСерию
ЛинейныйГрафик линияГрафик;
@ДобавитьСерию
ЛинейныйГрафик2 линияГрафик2;
@ДобавитьСерию
СтолбчатыйГрафик столбчатыйГрафик;
}
public CombinedChart(String title) {
// this.title = title; // Используйте значение, предоставленное в view.json
lineChart = new LineChart();
lineChart.setName("Линейный график");
lineChart.setData(new double[]{1, 2, 3, 4});
line2Chart = new Line2Chart();
line2Chart.setName("Линейный график 2");
line2Chart.setData(new double[]{1, 2, 3, 4});
barChart = new BarChart();
barChart.setName("Столбчатый график");
barChart.setData(new double[]{5, 6, 7, 8});
}
public class EChartsTest {
public static void main(String[] args) {
Object json = EChartsAnnotationProcessor.parseChart(new CombinedChart("Комбинированный график"));
System.out.print(JSON.toJSONString(json));
}
}
7
Экспорт файла JSON
Экспортировать файл JSON для использования другими графиками
@DuplexChart(exportTo = "templates/view.json") // Вызов процессора графиков для парсинга и экспорта файла JSON
@SingleChart(exportTo = "templates/view.json") // Недопустимо использовать вместе с аннотацией DuplexChart
8
Добавление функции
import com.alibaba.fastjson.JSONAware;
public class Function implements JSONAware { // Реализация интерфейса JSONAware
String method;
String arguments;
String body;
public Function(String method, String arguments, String body) {
this.method = method;
this.arguments = arguments;
this.body = body;
}
@Override
public String toJSONString() {
return "функция " + method + "(" + arguments + "){" + "\n" + body + "\n" + "}";
}
}
```java
import com.alibaba.fastjson.JSON;
9 Тестирование```java public class ECharts { public static void main(String[] args) { Function function = new Function("toString", "str", "alert();"); System.out.println(JSON.toJSONString(function)); } }
## Заключение
Проект завершен, дальнейшие изменения будут минимальными и ограничены исправлением ошибок. Интеграция проекта безопасна!
`Taglib` проект
[Lift](https://github.com/zaoying/EChartsTaglib "EChartsTaglib")
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )