Java 1.8,Jackson库2.1.5
我需要覆盖在json中序列化对象的行为.
我需要的是,如果值为null且员工是合作伙伴员工,则忽略序列化json响应中的bonus属性.但是,尝试下面的代码似乎没有按预期工作.
class Employee{
private String bonus;
public String getBonus(){return bonus;}
public String setBonus(){this.bonus = bonus;}
}
class Partner extends Employee{
@Override
@JsonInclude(NON_NULL)
public String getBonus(){return super.getBonus();}
}
有帮助吗?
最佳答案 如果你可以排除所有null属性,那么你可以在类上使用@JsonSerialize.以下测试使用Jackson 2.1.5成功运行:
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import org.junit.Test;
public class SomeTest {
public static class Employee {
private String bonus;
public String getBonus() {
return bonus;
}
public void setBonus(String bonus) {
this.bonus = bonus;
}
}
@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
public static class Partner extends Employee {
@Override
public String getBonus() {
return super.getBonus();
}
}
@Test
public void testSerialize() throws Exception {
Employee employee = new Employee();
Partner partner = new Partner();
ObjectMapper objectMapper = new ObjectMapper();
System.out.println("Employee: " + objectMapper.writeValueAsString(employee));
System.out.println(" Partner: " + objectMapper.writeValueAsString(partner));
}
}
输出:
Employee: {"bonus":null}
Partner: {}