關於 fastjson 中的 SimplePropertyPreFilter
发布时间:2020-12-16 19:24:58 所属栏目:百科 来源:网络整理
导读:版本:fastjson-1.1.26 SimplePropertyPreFilter源碼: package com.alibaba.fastjson.serializer;import java.util.HashSet;import java.util.Set;public class SimplePropertyPreFilter implements PropertyPreFilter { private final Class? clazz; priva
版本:fastjson-1.1.26 SimplePropertyPreFilter源碼:package com.alibaba.fastjson.serializer; import java.util.HashSet; import java.util.Set; public class SimplePropertyPreFilter implements PropertyPreFilter { private final Class<?> clazz; private final Set<String> includes = new HashSet<String>(); private final Set<String> excludes = new HashSet<String>(); public SimplePropertyPreFilter(String... properties){ this(null,properties); } public SimplePropertyPreFilter(Class<?> clazz,String... properties){ super(); this.clazz = clazz; for (String item : properties) { if (item != null) { this.includes.add(item); } } } public Class<?> getClazz() { return clazz; } public Set<String> getIncludes() { return includes; } public Set<String> getExcludes() { return excludes; } public boolean apply(JSONSerializer serializer,Object source,String name) { if (source == null) { return true; } if (clazz != null && !clazz.isInstance(source)) { return true; } if (this.excludes.contains(name)) { return false; } if (includes.size() == 0 || includes.contains(name)) { return true; } return false; } }
於是得動手修改,我另外寫了個類: public class SimplePropertyPreFilter implements PropertyPreFilter { private final Class<?> clazz; private Set<String> includes = new HashSet<String>(); private Set<String> excludes = new HashSet<String>(); public SimplePropertyPreFilter(String... properties){ this(null,String... properties){ super(); this.clazz = clazz; for (String item : properties) { if (item != null) { this.includes.add(item); } } } public Class<?> getClazz() { return clazz; } public boolean apply(JSONSerializer serializer,String name) { if (source == null) { return true; } if (clazz != null && !clazz.isInstance(source)) { return true; } if (this.excludes.contains(name)) { return false; } if (includes.size() == 0 || includes.contains(name)) { return true; } return false; } public Set<String> getIncludes() { return includes; } public Set<String> getExcludes() { return excludes; } public void setIncludes(Set<String> includes) { this.includes = includes; } public void setExcludes(Set<String> excludes) { this.excludes = excludes; } } 簡單做了個測試:
public static String bean(Object object){ Set<String> excludes = new HashSet<String>(); excludes.add("name"); SimplePropertyPreFilter spp = new SimplePropertyPreFilter(); spp.setExcludes(excludes); return JSON.toJSONString(object,spp); }OK! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |