【问题标题】:Jersey Jackson and Spring Service泽西杰克逊和春季服务
【发布时间】:2013-03-02 13:42:03
【问题描述】:

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

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

【问题讨论】:

  • 你的 BaseEntity 是一个 JavaBean 吗?(即你有用户名的 getter/setter)
  • BaseEntity 是一个 JavaBean。但是用户(有用户名)扩展了 BaseEntity。 BaseEntity 只包含 id、created by、created Date、update by、更新日期(所有实体通用)。
  • 下面的链接回答了我的问题。 stackoverflow.com/questions/11798394/…

标签: spring rest jersey jackson


【解决方案1】:

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

Polymorphism in jackson annotations: @JsonTypeInfo usage

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2015-10-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-22
      • 1970-01-01
      • 2012-06-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多