0

我们正在使用 Jersey、Jackson 和 Spring 服务 (@service) 注释来公开一些基于 REST 的 Web 服务。请求和响应数据以 JSON 格式交换。

以下是服务请求对象内容:

public class ServiceRequest{
   private RequestHeader requestHeader;
   private List<BaseEntity> requestData;
}

所有特定实体都将从 BaseEntity 类扩展。例如 :

public class User extends BaseEntity{
  private String userName;
}

对于所有服务操作,我们通过传递请求数据对象列表仅接受 ServiceRequest 对象。现在,当我们尝试从 REST 客户端调用这些操作时,这些操作都失败了

 userName is not found as part of BaseEntity.

这是因为在转换时,Jersey/Jackson 会尝试使用指定对象的属性自动检测传入的字段名称。

我想知道有什么办法,我可以聪明地处理这个问题。我们没有更改服务签名的选项。非常感谢您对此的帮助。

4

2 回答 2

0

下面的链接有我的问题的答案。谢谢你的支持。

杰克逊注解中的多态性:@JsonTypeInfo 用法

于 2013-11-18T03:31:16.140 回答
-1

您是否尝试过使用泛型?您可以在 Resource's 声明具体的类类型,以通知 Jackson 映射到特定类型

于 2016-11-28T11:01:31.183 回答