泽西岛休息服务器 - 如果值为 0,则在 json 响应中排除整数
Jersey rest server - Exclude integer in json response if value is 0
假设我有这段代码可以在我休息时创建一个人 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"
}
我只想 return 响应对象中的 personId 和 name 参数。我怎样才能在这个例子中排除 departmentId.
使用 Integer 作为实例变量,如果没有设置它将为 null。然后你的 json 编组器将忽略它。
如果您使用 Jackson 进行编组,则可以使用 JsonInclude 注释:
@XmlRootElement
public class Person{
@JsonProperty
int personId;
@JsonInclude(Include.NON_DEFAULT)
@JsonProperty
int departmentId;
@JsonProperty
String name;
}
使用 Include.NON_DEFAULT 将排除 属性 如果它的值为 0(int 的默认值),即使它是原始值。
假设我有这段代码可以在我休息时创建一个人 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"
}
我只想 return 响应对象中的 personId 和 name 参数。我怎样才能在这个例子中排除 departmentId.
使用 Integer 作为实例变量,如果没有设置它将为 null。然后你的 json 编组器将忽略它。
如果您使用 Jackson 进行编组,则可以使用 JsonInclude 注释:
@XmlRootElement
public class Person{
@JsonProperty
int personId;
@JsonInclude(Include.NON_DEFAULT)
@JsonProperty
int departmentId;
@JsonProperty
String name;
}
使用 Include.NON_DEFAULT 将排除 属性 如果它的值为 0(int 的默认值),即使它是原始值。