package cn.topcheer.landTax.filter; import java.util.HashMap; import java.util.Map; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.serializer.JSONSerializer; import com.alibaba.fastjson.serializer.PropertyPreFilter; import com.alibaba.fastjson.serializer.SerializerFeature; /** * @author :晨风²º¹³ <br> * @Comment : fastjson 针对类型的属性选择过滤器(可以跨层级) <br> */ public class ComplexPropertyPreFilter implements PropertyPreFilter { private Map<Class<?>, String[]> includes = new HashMap<Class<?>, String[]>(); private Map<Class<?>, String[]> excludes = new HashMap<Class<?>, String[]>(); static { JSON.DEFAULT_GENERATE_FEATURE |= SerializerFeature.DisableCircularReferenceDetect.getMask(); } public ComplexPropertyPreFilter() { } public ComplexPropertyPreFilter(Map<Class<?>, String[]> includes) { super(); this.includes = includes; } public boolean apply(JSONSerializer serializer, Object source, String name) { //对象为空。直接放行 if (source == null) { return true; } // 获取当前需要序列化的对象的类对象 Class<?> clazz = source.getClass(); // 无需序列的对象、寻找需要过滤的对象,可以提高查找层级 // 找到不需要的序列化的类型 for (Map.Entry<Class<?>, String[]> item : this.excludes.entrySet()) { // isAssignableFrom(),用来判断类型间是否有继承关系 if (item.getKey().isAssignableFrom(clazz)) { String[] strs = item.getValue(); // 该类型下 此 name 值无需序列化 if (isHave(strs, name)) { return false; } } } // 需要序列的对象集合为空 表示 全部需要序列化 if (this.includes.isEmpty()) { return true; } // 需要序列的对象 // 找到不需要的序列化的类型 for (Map.Entry<Class<?>, String[]> item : this.includes.entrySet()) { // isAssignableFrom(),用来判断类型间是否有继承关系 if (item.getKey().isAssignableFrom(clazz)) { String[] strs = item.getValue(); // 该类型下 此 name 值无需序列化 if (isHave(strs, name)) { return true; } } } return false; } /* * 此方法有两个参数,第一个是要查找的字符串数组,第二个是要查找的字符或字符串 */ public static boolean isHave(String[] strs, String s) { for (int i = 0; i < strs.length; i++) { // 循环查找字符串数组中的每个字符串中是否包含所有查找的内容 if (strs[i].equals(s)) { // 查找到了就返回真,不在继续查询 return true; } } // 没找到返回false return false; } public Map<Class<?>, String[]> getIncludes() { return includes; } public void setIncludes(Map<Class<?>, String[]> includes) { this.includes = includes; } public Map<Class<?>, String[]> getExcludes() { return excludes; } public void setExcludes(Map<Class<?>, String[]> excludes) { this.excludes = excludes; } }
使用其过滤器
Map<Class<?>, String[]> map = new HashMap<Class<?>, String[]>(); map.put(Area.class, new String[]{"id","name","area"}); ComplexPropertyPreFilter ss = new ComplexPropertyPreFilter(map); String ddd = JSONArray.toJSONString(list,ss);
其结果:
[ { "id": "420000", "name": "湖北省" }, { "area": { "id": "420000", "name": "湖北省" }, "id": "420051", "name": "省直属局" }, { "area": { "id": "420000", "name": "湖北省" }, "id": "420100", "name": "武汉市" }, { "area": { "area": { "id": "420000", "name": "湖北省" }, "id": "420100", "name": "武汉市" }, "id": "420101", "name": "武汉市直属" }, { "area": { "area": { "id": "420000", "name": "湖北省" }, "id": "420100", "name": "武汉市" }, "id": "420102", "name": "江岸区" }]
相关推荐
fastJson属性详细说明:FastJsonHttpMessageConverter4、AutoCloseSource、AllowComment、AllowUnQuotedFieldNames、AllowSingleQuotes、InternFieldNames等
FastJson调整实体类中属性输出的顺序,字段为空的时候仍然输出,有时候如果不输出空的字段,导致字段缺失在做判断的时候,获取某个字段就会报错,而对于输出顺序的重要性,就是 如果没有顺序,那么数据,在输出到别的接口的...
原生的fastjson 字段别名只能通过代码hardcode , 这里我添加了别名的配置文件读取,这样适合在和第三方对接接口字段名经常变更的情况。
转换器FastJSON
fastjson-1.1.35.jar ,fastjson-1.1.36.jar ,fastjson-1.1.37.jar ,fastjson-1.1.44.jar ,fastjson-1.2.3.jar,fastjson-1.2.4.jar
springboot完美整合shiro、ehcache、redis、spring data jpa,swagger、fastjson,后续继续补充,适合初中级开发练习掌握框架,代码下载可直接运行,测试已通过
赠送jar包:fastjson-1.2.54.jar; 赠送原API文档:fastjson-1.2.54-javadoc.jar; 赠送源代码:fastjson-1.2.54-sources.jar; 赠送Maven依赖信息文件:fastjson-1.2.54.pom; 包含翻译后的API文档:fastjson-...
fastjson-1.2.83.jar下载,fastjson是阿里巴巴的开源JSON解析库,可以解析JSON格式的字符串,支持将Java Bean序列化为JSON字符串,也支持从JSON字符串反序列化到JavaBean。fastjson采用全新的JSON解析算法,运行速度极快...
Android Studio FastJSON小示例,对应博文地址: http://blog.csdn.net/djstavaV/article/details/48785801
Alibaba Fastjson Jar包官方版是可以帮助使用Fastjson功能的Fastjson jar包,Fastjson是一个Java语言编写的高性能功能完善的JSON库,当然必备Alibaba Fastjson Jar包官方版。
赠送jar包:fastjson-1.2.72.jar; 赠送原API文档:fastjson-1.2.72-javadoc.jar; 赠送源代码:fastjson-1.2.72-sources.jar; 赠送Maven依赖信息文件:fastjson-1.2.72.pom; 包含翻译后的API文档:fastjson-1.2....
此配置和包,是springMVC4.3.3 +spring4+hibernate5.1.3+二级缓存ehcache(不用可以关闭)+fastjson。 是正常运行的项目里拷出来的,方便大家使用。
FastJson对于json格式字符串的解析主要用到了下面三...1.JSON:fastJson的解析器,用于JSON格式字符串与JSON对象及javaBean之间的转换 2.JSONObject:fastJson提供的json对象 3.JSONArray:fastJson提供json数组对象
fastJSON 版本 v2.1.18
FASTJSON-1.2.17.jar,FASTJSON-1.2.17-sources.jar
赠送jar包:fastjson-1.2.78.jar; 赠送原API文档:fastjson-1.2.78-javadoc.jar; 赠送源代码:fastjson-1.2.78-sources.jar; 赠送Maven依赖信息文件:fastjson-1.2.78.pom; 包含翻译后的API文档:fastjson-1.2....
Alibaba Fastjson Jar包是可以帮助使用Fastjson功能的Fastjson jar包,Fastjson是一个Java语言编写的高性能功能完善的JSON库,当然必备fastjson jar包。快速解析json神器,方便快捷的工具。
fastjson1.2.2.rar
fastjson类库相关文档(fastjson文档)
fastjson 是一个性能很好的 Java 语言实现的 JSON 解析器和生成器 来自阿里巴巴的工程师开发 主要特点: 快速FAST 比其它任何基于Java的解析器和生成器更快 包括jackson) 强大(支持普通JDK类包括任意Java Bean ...