2015-11-02 4 views
4

Java 1.8, Джексон библиотека 2.1.5Использования JsonInclude аннотации игнорировать пустые значения в расширенном классе

мне нужно переопределить поведение как объект сериализации в JSON.

Мне нужно проигнорировать свойство bonus из сериализованного ответа json в случае, если значение равно null, а работник - работник Partner. Однако попытка использования кода ниже не работает должным образом.

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();} 
} 

Любая помощь?

ответ

2

Если вы можете пройти мимо, за исключением всех null объектов, то вы можете использовать @JsonSerialize на классе. Следующий тест успешно работает для меня с помощью Джексон 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: {} 
+0

Я уже пробовал, но безуспешно :( – geo

+0

Какую версию Джексона вы используете, имеет вы пытались 'objectMapper.setSerializationInclusion (Include.NON_NULL)'? Это исключит все свойства 'null'. –

+0

Jackson library 2.1.5. Я не могу использовать ObjectMapper, так как я не конечная точка – geo

Смежные вопросы