-
Notifications
You must be signed in to change notification settings - Fork 481
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[BUG]fastjson2.0.53传入多个SimplePropertyPreFilter的实现类时,只生效最后一个 #2979
Labels
bug
Something isn't working
Comments
public static void main(String[] args) {
Filter[] filters = new Filter[2];
SimplePropertyPreFilter filter1 = new SimplePropertyPreFilter(BeanB.class);
filters[0] = filter1;
filter1.getExcludes().add("uname");
filter1.getExcludes().add("age");
List<BeanB> list = new ArrayList<>();
BeanB beanB = new BeanB();
beanB.setUname("user1");
beanB.setId("1");
beanB.setAge("20");
list.add(beanB);
String str = JSON.toJSONString(list, filters, JSONWriter.Feature.WriteMapNullValue);
System.out.println(str);
}
static class BeanB {
private String uname;
private String id;
private String age;
public String getUname() {
return uname;
}
/**
* 写所有属性的get和set
*
*/
public void setUname(String uname) {
this.uname = uname;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
} 为啥不写成这样呢,可以看看源码,同一个类型的filter在数组中只生效一次 public void configFilter(Filter... filters) {
for (int i = 0; i < filters.length; i++) {
Filter filter = filters[i];
if (filter instanceof NameFilter) {
if (this.nameFilter == null) {
this.nameFilter = (NameFilter) filter;
} else {
this.nameFilter = NameFilter.compose(this.nameFilter, (NameFilter) filter);
}
}
if (filter instanceof ValueFilter) {
if (this.valueFilter == null) {
this.valueFilter = (ValueFilter) filter;
} else {
this.valueFilter = ValueFilter.compose(this.valueFilter, (ValueFilter) filter);
}
}
if (filter instanceof PropertyFilter) {
this.propertyFilter = (PropertyFilter) filter;
}
if (filter instanceof PropertyPreFilter) {
this.propertyPreFilter = (PropertyPreFilter) filter;
}
if (filter instanceof BeforeFilter) {
this.beforeFilter = (BeforeFilter) filter;
}
if (filter instanceof AfterFilter) {
this.afterFilter = (AfterFilter) filter;
}
if (filter instanceof LabelFilter) {
this.labelFilter = (LabelFilter) filter;
}
if (filter instanceof ContextValueFilter) {
this.contextValueFilter = (ContextValueFilter) filter;
}
if (filter instanceof ContextNameFilter) {
this.contextNameFilter = (ContextNameFilter) filter;
}
}
hasFilter = propertyPreFilter != null
|| propertyFilter != null
|| nameFilter != null
|| valueFilter != null
|| beforeFilter != null
|| afterFilter != null
|| labelFilter != null
|| contextValueFilter != null
|| contextNameFilter != null;
} |
是可以的、要变成全局了。以前用1的时候是分散各个地方判断。 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
问题描述
简要描述您碰到的问题。
环境信息
请填写以下信息:
重现步骤
期待的正确结果
[{"id":"1"}]
实际输出
[{"id":"1","uname":"user1"}]
The text was updated successfully, but these errors were encountered: