Kdg*_*Dev 6 java annotations jackson playframework-2.0
使用 Play Framework 2.2,制作 RESTfull API。
在我使用的模型中,我只想输出(Json with Jackson)相关对象的 Id,而不是整个对象。我找到了如何做到这一点,如下所示:
@JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class, property = "id")
@JsonIdentityReference(alwaysAsId = true)
@JsonIgnore
public Object myObject;
Run Code Online (Sandbox Code Playgroud)
Json 输出将包含一个 JsonNode "myObjectId: 1"。例如。
IdentityInfo 和 IdentityReference 负责处理这个问题。
问题是,无论我想要什么,我都必须粘贴这 3 行,以及某个字段需要存在的任何其他注释。这变得太大了,我正在尝试创建 1 个自定义注释来一起完成所有这些事情。
这是可能的,如何?一个我可以阅读它的链接或一个例子将不胜感激。
要解决您的问题,您必须创建一个用JacksonAnnotationInside注释的注释和您希望它“包含”的注释。
该注释的 Javadoc 说它是:
元注解(在其他注解上使用的注解)用于指示杰克逊应该使用它拥有的元注解而不是使用目标注解(用此注解进行注解)。这在通过具有容器注释来创建“组合注释”时非常有用,容器注释需要使用此注释以及它“包含”的所有注释进行注释。
例如对于你的情况,你会有这样的事情:
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
@com.fasterxml.jackson.annotation.JacksonAnnotationsInside // this is important
@JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class, property = "id")
@JsonIdentityReference(alwaysAsId = true)
public @interface MyCustomAnnotation {
}
Run Code Online (Sandbox Code Playgroud)
然后您可以像使用 Jackson 注释一样正常使用它
@MyCustomAnnotation
public Object myObject;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4315 次 |
| 最近记录: |