从java中的其他注释中自定义注释



我在json中有日期:

{
"date": "04/22/2022 16:01:01" 
}

和类:

public class Foo{
@JsonDeserialize(using = LocalDateTimeDeserializer.class)
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "dd/MM/yyyy HH:mm:ss")
private LocalDateTime date;
}

一切正常

有可能在其中有@JsonDeserialize@JsonFormat的注释吗?

我正在尝试这样做

@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.ANNOTATION_TYPE, ElementType.METHOD, ElementType.FIELD, ElementType.TYPE, ElementType.PARAMETER})
@JsonDeserialize(using = LocalDateTimeDeserializer.class)
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "dd/MM/yyyy HH:mm:ss")
public @interface MyLocalDateTimeAnnotation{
}

其中class可以像这样:

public class Foo{
@MyLocalDateTimeAnnotation
private LocalDateTime date;
}

但是行不通。

你需要使用@JacksonAnnotationsInside

元注释(对其他注释使用的注释)用于表明不使用目标注释(annotation .), Jackson应该使用元注释它有。这在创建"组合注释"时很有用。通过容器注释,需要用此注释对其进行注释以及它'包含'的所有注释。

的例子:

@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.ANNOTATION_TYPE, ElementType.METHOD, ElementType.FIELD, ElementType.TYPE, ElementType.PARAMETER})
@JsonDeserialize(using = LocalDateTimeDeserializer.class)
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "dd/MM/yyyy HH:mm:ss")
@JacksonAnnotationsInside
public @interface MyLocalDateTimeAnnotation {
}
public class Foo{
@MyLocalDateTimeAnnotation
private LocalDateTime date;
}

相关内容

  • 没有找到相关文章

最新更新