java - Jersey 休息服务器 - 如果值为 0,则排除 json 响应中的整数

标签 java rest jersey

假设我有这段代码用于在我的 REST API 中创建一个人。

@XmlRootElement    
public class Person
{
    int personId, departmentId;
    String name;
}


@POST
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Response create(Person person)
{
    createPerson(person);
    Person p = new Person();
    p.setPersonId(p.getPersonId());
    p.setName(p.getName());
    return Response.status(Response.Status.CREATED).entity(p).build();
}

响应示例:

{
    "departmentId" : 0,
    "personId" : 4335,
    "name" : "John Smith"
}

我只想返回响应对象中的 personId 和 name 参数。在这个例子中我怎样才能排除departmentId。

最佳答案

如果您使用 Jackson 进行编码,则可以使用 JsonIninclude 注释:

@XmlRootElement
public class Person{

  @JsonProperty
  int personId;

  @JsonInclude(Include.NON_DEFAULT)
  @JsonProperty
  int departmentId;

  @JsonProperty
  String name;

}

如果属性值为 0(默认为 int),则使用 Include.NON_DEFAULT 将排除该属性,即使它是基元。

关于java - Jersey 休息服务器 - 如果值为 0,则排除 json 响应中的整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27862110/

相关文章:

java - 如何从Rest Client的响应对象中获取url对象

java - ArrayList IndexOutOfBoundsException 尽管在列表的容量范围内添加

angular - 使用 Angular + Spring Boot + REST + JWT 进行 CSRF 保护

java - 在 java repaint() 中调用 2 个函数,然后调用 func1(),但首先调用 func1(),然后调用 repaint()。为什么?

有理由的 RESTful DELETE

rest - 以 RESTful 方式建模更复杂的实体关系(框和节点)

java - 如何将 Jersey beans 注入(inject) Weld 中的 Quartz 作业中?

Java Jersey 在绑定(bind)时构造类

java - 取消选择 JTable 的行

java - Log4J 不创建许多日志文件之一