Если я объявить класс аннотаций следующим образом:Могу ли я открыть свойство аннотации?
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface ReportType {
public String reportName();
}
А потом построить список кучу классов, которые используют эту аннотацию и поставлять «REPORTNAME», но по-видимому, свойство REPORTNAME не подвергается, как нормальный добытчик. Я могу получить доступ к нему на Java, но если я верну свой список с использованием Spring, в строке JSON, которая переводится с него, не будет никаких свойств. Я надеялся увидеть:
{"reportName":"TPS Report"}
вместо этого я вижу:
{}
Есть ли что-то лишнее, я могу сделать, чтобы получить свойство REPORTNAME получить включены в JSON?
Можете ли вы объяснить небольшим примером кода, что именно вы пытаетесь сериализовать? Sticking '@ JsonProperty' работает для большинства вещей, может быть, для вас тоже? – zapl
Это именно то, что я пытаюсь сериализовать - экземпляры классов, которые используют этот настраиваемый атрибут @ReportType. Цель состоит в том, чтобы сериализовать reportName в JSON. Я думаю, что мне придется написать класс оболочки вокруг него, который предоставляет геттеры, чтобы заставить его работать. – Trant
Да, один из способов состоит в том, чтобы иметь код типа https://github.com/netty/netty/blob/master/transport/src/main/java/io/netty/channel/ChannelHandlerAdapter.java#L36 в родительском классе все сериализованные классы, которые предоставляют значение как регулярное свойство. Нет необходимости в сеттерах. Другой альтернативой будет сериализатор клиента для «Объекта» http://www.baeldung.com/jackson-custom-serialization, но я думаю, что это становится трудным. Наконец, поскольку вы весной, я могу представить, что вы можете каким-то образом создать динамические прокси-классы (sub), которые регулярно раскрывают свойство, не наследуя это. – zapl