2015-11-28 2 views
0

У меня есть класс с большим количеством атрибутов, которые необходимы для логики на стороне сервера, но некоторые из них необходимы для пользовательского интерфейса. Теперь, когда я создаю json из класса, все атрибуты записываются в json. Я хочу игнорировать некоторые значения только тогда, когда он преобразуется в json. Я пробовал @JsonIgnore. Но это не работает.Как игнорировать атрибуты при сериализации класса ObjectMapper

Мой класс

import com.fasterxml.jackson.annotation.JsonIgnore; 
import com.fasterxml.jackson.annotation.JsonIgnoreProperties; 
import com.fasterxml.jackson.annotation.JsonProperty; 

@JsonIgnoreProperties(ignoreUnknown = true) 
public class Student { 

    @JsonProperty("id") 
    protected Integer id; 

    @JsonProperty("name") 
    protected String name; 

    /** 
    * This field I want to ignore in json. 
    * Thus used @JsonIgnore in its getter 
    */ 
    @JsonProperty("securityCode") 
    protected String securityCode; 

    public Integer getId() { 
     return id; 
    } 

    public void setId(Integer id) { 
     this.id = id; 
    } 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

    @JsonIgnore 
    public String getSecurityCode() { 
     return securityCode; 
    } 

    public void setSecurityCode(String securityCode) { 
     this.securityCode = securityCode; 
    } 
} 

И я пишу это, используя

public static StringBuilder convertToJson(Object value){ 
     StringBuilder stringValue = new StringBuilder(); 
     ObjectMapper mapper = new ObjectMapper(); 
     try { 
      stringValue.append(mapper.writeValueAsString(value)); 
     } catch (JsonProcessingException e) { 
      logger.error("Error while converting to json>>",e); 
     } 
     return stringValue; 
    } 

My Expected json should contain only : 

id:1 
name:abc 

but what I am getting is 
id:1 
name:abc 
securityCode:_gshb_90880..some_value. 

Что то здесь не так, пожалуйста, помогите

ответ

2

Ваш @JsonProperty аннотацию переопределяет @JsonIgnore аннотацию. Удалите @JsonProperty от securityCode и вы получите желаемый выход json.

Если вы хотите более продвинутым игнорирование/фильтрации, пожалуйста, посмотрите на:

@JsonViewhttp://wiki.fasterxml.com/JacksonJsonViews:

@JsonFilter: http://wiki.fasterxml.com/JacksonFeatureJsonFilter

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