2016-03-02 32 views
1

我想忽略像@JsonIgnoreProperties動態數量的參數

filtervalue0,filtervalue1,filtervalue2性質的數量(這是我從UI獲得)等

我做不過從UI

得到這個數

也就是說,如果filterscount = 3 我知道,會有 filtervalue0,filtervalue1,filtervalue2

是否可以動態地有這樣的工作(即@JsonIgnoreProperties)

+0

'@ JsonIgnoreProperties'不會做你多好。當你從UI獲得你的價值時,這個類已經被編譯。但看看['@ JsonFilter'](http://wiki.fasterxml.com/JacksonFeatureJsonFilter)。 – dhke

回答

3

您可以使用@JsonFilter動態過濾字段爲SerializationDeserialization

例如:

@JsonFilter("myFilter") 
static class Bean { 
    public String filtervalue0 = "a"; 
    public String filtervalue1 = "b"; 
    public int filtercount = 1; 
    public int totalFilters = 2; 
} 

static void test() throws JsonProcessingException{ 
    Bean value = new Bean(); 
    ObjectMapper mapper = new ObjectMapper(); 
    Set<String> filtersToExclude = new HashSet<>(); 

    //logic for applying filter 
    for(int i=value.totalFilters-1; i>value.totalFilters-value.filtercount-1; i--){ 
     filtersToExclude.add("filtervalue"+i); 
    } 

    //dynamic field filtering is provided by FilterProvider 
    FilterProvider filters = new SimpleFilterProvider().addFilter("myFilter", 
     SimpleBeanPropertyFilter.filterOutAllExcept(filtersToExclude)); 
    String json = mapper.setFilterProvider(filters).writeValueAsString(value); 
    System.out.println(json); // prints {"filtervalue1":"b"} 
} 

public static void main(String[] args) throws JsonProcessingException { 
    test(); 
} 
+0

非常感謝。我該如何處理他們的getter/setters?我是否必須指定所有獲得者/設置者? – testndtv

+0

而且我可以不使用@JsonIgnoreProperties ...如果我只想靜默我目前得到的無法識別的字段錯誤? – testndtv

+0

我是否必須在MyPojoClass中爲@JsonFilter編寫此代碼(其中,我有屬性映射......這些來自UI請求) – testndtv