2013-03-14 137 views
0

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

下面是一个服务请求对象的内容:

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. 

这是因为在转换,新泽西州/杰克逊试图与指定对象的属性自动检测输入的字段名称失败。

我想知道有没有办法,我可以用智能的方式处理这个问题。我们没有选择更改服务的签名。非常感谢你对此的帮助。

+0

是你的BaseEntity是一个JavaBean吗?(即你有一个getter/setter的用户名) – 2013-03-14 09:31:29

+0

BaseEntity是一个JavaBean。但用户(拥有用户名)扩展了BaseEntity。 BaseEntity只包含id,由创建日期,更新日期,更新日期(这对所有实体通用)。 – Manjunath 2013-03-14 09:48:09

+1

下面的链接有我的问题的答案。 http://stackoverflow.com/questions/11798394/polymorphism-in-jackson-annotations-jsontypeinfo-usage – Manjunath 2013-03-16 12:55:17

回答

-1

你有没有尝试过使用泛型?你可以在Resource的声明具体的类类型来通知Jackson映射到特定类型

+0

如果可能,用代码添加详细的解释。 – Sandeep 2016-11-28 11:25:01

相关问题