泽西杰克逊和春季服务

时间:2013-03-14 09:22:55

标签: spring rest jersey jackson

我们正在使用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尝试使用指定对象的属性自动检测传入的字段名称。

我想知道有什么办法,我可以用聪明的方式处理这个问题。我们无法更改服务的签名。真的很感谢你的帮助。

2 个答案:

答案 0 :(得分:0)

以下链接可以解答我的问题。谢谢你的支持。

Polymorphism in jackson annotations: @JsonTypeInfo usage

答案 1 :(得分:-1)

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