如何在不为休息服务中的 java 对象使用 @XmlRootElement 的情况下获取请求对象

how to get request object without using @XmlRootElement for java objects in rest services

我正在尝试使用 Apache CXF 和 Jackson 数据绑定生成休息服务。在这里我不想使用 @XmlRootElement 注释。当我尝试下面的代码时,请求对象就像一个空对象。

这是我的服务界面

@POST
@Path("/getusers/")
@Consumes("application/json")
@Produces("application/json")
public List<UserDetails> getusers(UserDetails userDetails) throws ServiceException;

这是我的域对象

public class UserDetails implements Serializable{

private String userName;
private int userId;

public UserDetails(){

}
 //getters and setters...
}

Json 对象看起来像

{
    "id" : "102",
    "username" : "scott"
}

并且我收到请求对象的空指针异常

如何访问我的请求对象 注意:这里我使用的是Jackson Data-Binding

您的 JSON 包含 username,而成员名为 userName。此外,iduserId 是不同的。

你有三个选择:

  • 更改 UserDetails 成员的名称以匹配 JSON 对象中的字段。
  • 更改 JSON 对象的名称以匹配 UserDetails 的成员名称。
  • 使用 @JsonProperty 配置要绑定到 UserDetails 成员的 JSON 对象名称。