關於 fastjson 中的 SimplePropertyPreFilter
2012-12-17 18:41
225 查看
版本:fastjson-1.1.26
SimplePropertyPreFilter源碼:
可知 includes 和 excludes 都為 final 所以不可修改
於是得動手修改,我另外寫了個類:
簡單做了個測試:
OK!
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; } }
可知 includes 和 excludes 都為 final 所以不可修改
於是得動手修改,我另外寫了個類:
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, 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 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 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!
相关文章推荐
- 在fastjson中使用SimplePropertyPreFilter忽略指定属性
- fastJson在bean中加入@JsonProperty转换出的对象中依然有字段为null的处理
- 在hibernate 中比 SimplePropertyPreFilter 还要好用的过滤类 ComplexPropertyPreFilter(级联过滤,关系映射过滤类,复杂的属性预过滤器)!!!!
- fastjson中的一些问题
- Nodejs V8引擎 fast property lookup
- Fastjson的简单使用
- fastJSON解析本地数据
- 【fastJSON】利用fastJSON处理循环引用的问题
- [ansible学习笔记]Error: ansible requires the stdlib json or simplejson module, neither was found!
- 【Java】Java-fastjson-基本使用方法
- fastjson常用使用方法
- Spring boot引入引入fastjson
- 用fastjson将数据序列化和反序列化给jfinal的model的方案
- FastJSON 应用前测试
- fastJson的简单实用
- fastJson在java后台转换json格式数据探究(一)
- Android JSON解析库Gson和Fast-json的使用对比和图书列表小案例
- java中对于JSON 的处理 fastjson gson 系统自带的JSON 的选择
- fastjson转换对象,属性首字母大小写的问题
- fastjson使用心得