我正在使用 Jersey 编写 REST 服务。我有一个带有注释的抽象类 Promotion:
@JsonTypeInfo(use = JsonTypeInfo.Id.CLASS)
多亏了这一点,当我返回对象列表时:
@GET
@Produces(MediaType.APPLICATION_JSON)
@Path("promotions/")
public List<Promotion> getClosestPromotions() {
List<Promotion> promotions = getPromotions(); //here I get some objects
return promotions;
}
我为该列表中的每个对象得到一个带有“@class”字段的 Json 字符串。但问题是,如果我返回一个响应:
@GET
@Produces(MediaType.APPLICATION_JSON)
@Path("promotions/")
public Response getClosestPromotions() {
List<Promotion> promotions = getPromotions(); //here I get some objects
return Response.ok().entity(promotions).build();
}
我得到了几乎相同的列表,但没有额外的“@class”字段。为什么会这样,我该怎么做才能得到一个带有“@class”字段的列表,在响应中返回一个列表?顺便说一句,令人惊讶的是,当我返回一个仅作为实体给出的 Promotion 对象的 Response 并且我得到那个“@class”字段时,它就起作用了。