2014-03-19 37 views
1

一個簡單的類有‘是’方法和‘get’方法。我想Jackson忽略呼籲所有‘是’的方法。怎麼不理「是與傑克遜方法2.2.3

我試圖通過設置的ObjectMapper能見度設置爲

mapper.setVisibility(PropertyAccessor.IS_GETTER, Visibility.NONE); 

但它仍在考慮is-getter方法,爲什麼呢?

Jackson連載getter方法和公共變量。是否有可能表明Jackson只調用公共getter方法但不能序列化變量?

+0

關於你的第二個問題:是的,可以防止使用'public'變量;使用'@ JsonAutoDetect'或'mapper.setVisibility()',類似於getters/is-getters發現的方式可能被阻止。 – StaxMan

回答

1

你應該考慮@JsonAutoDetect註解。例如,(使用POJO類從這個問題:Conflicting getter definitions for property in Jackson 2.2.3的解決辦法是這樣的:

@JsonAutoDetect(isGetterVisibility = Visibility.NONE) 
class GetterMethodsObject { 

    private int id = 10; 

    public int getId() { 
     return id; 
    } 

    public boolean isId() { 
     return true; 
    } 
} 

用法示例:

ObjectMapper mapper = new ObjectMapper(); 
ObjectWriter objectWriter = mapper.writerWithDefaultPrettyPrinter(); 
System.out.println(objectWriter.writeValueAsString(new GetterMethodsObject())); 

上面的程序打印:

{ 
    "id" : 10 
}