Java @动态参数数的JsonIgnoreProperties

Java @动态参数数的JsonIgnoreProperties,java,json,jackson,Java,Json,Jackson,我想忽略一些属性(我从UI中得到的),比如 FilterValue 0、FilterValue 1、FilterValue 2等 然而,我确实从用户界面获得了这个计数 i、 e.如果过滤器计数=3 我知道,会有的 FilterValue 0、FilterValue 1、FilterValue 2 是否可以动态执行此操作(即@JsonIgnoreProperties)您可以使用@JsonFilter动态筛选字段以序列化或反序列化 例如: @JsonFilter("myFilter") static

我想忽略一些属性(我从UI中得到的),比如

FilterValue 0、FilterValue 1、FilterValue 2等

然而,我确实从用户界面获得了这个计数

i、 e.如果过滤器计数=3 我知道,会有的 FilterValue 0、FilterValue 1、FilterValue 2


是否可以动态执行此操作(即@JsonIgnoreProperties)

您可以使用
@JsonFilter
动态筛选字段以
序列化
反序列化

例如:

@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();
}
@JsonFilter(“myFilter”)
静态类Bean{
公共字符串filtervalue0=“a”;
公共字符串filtervalue1=“b”;
公共整数过滤器计数=1;
公共int totalFilters=2;
}
静态void test()引发JsonProcessingException{
Bean值=新Bean();
ObjectMapper mapper=新的ObjectMapper();
将filtersToExclude=newhashset();
//应用过滤器的逻辑
对于(int i=value.totalFilters-1;i>value.totalFilters-value.filtercount-1;i--){
过滤器除外。添加(“过滤器值”+i);
}
//动态字段过滤由FilterProvider提供
FilterProvider filters=new SimpleFilterProvider().addFilter(“myFilter”,
SimpleBeanPropertyFilter.FilterOutalExcept(filtersToExclude));
字符串json=mapper.setFilterProvider(过滤器).writeValueAsString(值);
System.out.println(json);//打印{“filtervalue1”:“b”}
}
公共静态void main(字符串[]args)引发JsonProcessingException{
test();
}

@JsonIgnoreProperties
对你没有多大好处。当您从UI获取值时,该类已经被编译。但是看看。非常感谢。我如何为他们处理getter/setter?我必须指定所有的getter/setter吗?如果我只是想消除当前得到的无法识别的字段错误,我是否可以不使用@JsonIgnoreProperties?我是否必须在MyPojoClass中为@JsonFilter编写此代码(在这里我有属性映射..这是来自UI请求的属性)@testndtv您确实需要实现getter/setter。要抑制无法识别的字段错误,请使用“mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES,false)”并在正在进行序列化/反序列化的bean/pojo类上应用@JsonFilter