`
牧羊人
  • 浏览: 210658 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

json lib 属性过滤

    博客分类:
  • java
阅读更多

import java.lang.reflect.Field;
import java.util.Collection;
import java.util.Set;

import net.sf.json.util.PropertyFilter;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
 
/**
 * <p>Title: 忽略属性</p>
 * <p>Description:忽略JAVABEAN的指定属性、是否忽略集合类属性</p>
 * 
 */
public class IgnoreFieldProcessorImpl implements PropertyFilter {
 
	Log log = LogFactory.getLog(this.getClass());
 
	/**
	 * 忽略的属性名称
	 */
	private String[] fields;
 
	/**
	 * 是否忽略集合
	 */
	private boolean ignoreColl = false;
 
	/**
	 * 空参构造方法<br/>
	 * 默认不忽略集合
	 */
	public IgnoreFieldProcessorImpl() {
		// empty
	}
 
	/**
	 * 构造方法
	 * @param fields 忽略属性名称数组
	 */
	public IgnoreFieldProcessorImpl(String[] fields) {
		this.fields = fields; 
	}
 
	/**
	 * 构造方法
	 * @param ignoreColl	是否忽略集合
	 * @param fields	忽略属性名称数组
	 */
	public IgnoreFieldProcessorImpl(boolean ignoreColl, String[] fields) {
		this.fields = fields;
		this.ignoreColl = ignoreColl; 
	}
 
	/**
	 * 构造方法
	 * @param ignoreColl 是否忽略集合
	 */
	public IgnoreFieldProcessorImpl(boolean ignoreColl) {
		this.ignoreColl = ignoreColl; 
	}
 
	public boolean apply(Object source, String name, Object value) {
		Field declaredField = null;
		//忽略值为null的属性
		if(value == null)
			return true;
		//剔除自定义属性,获取属性声明类型
		if(!"data".equals(name) && "data"!=name && !"totalSize".equals(name) && "totalSize"!=name ){
			try {
				declaredField = source.getClass().getDeclaredField(name);
			} catch (NoSuchFieldException e) {
				log.equals("没有找到属性" + name);
				e.printStackTrace();
			}
	    }
		// 忽略集合
		if (declaredField != null) {
			if(ignoreColl) {
				if(declaredField.getType() == Collection.class
						|| declaredField.getType() == Set.class) {
					return true;
				}
			}
		}
 
		// 忽略设定的属性
		if(fields != null && fields.length > 0) {
			if(juge(fields,name)) {  
	            return true;  
	        } else {  
	            return false;  
	        } 
		}
		 
		return false;
	}
	/**
	 * 过滤忽略的属性
	 * @param s
	 * @param s2
	 * @return
	 */
	 public boolean juge(String[] s,String s2){  
         boolean b = false;  
         for(String sl : s){  
             if(s2.equals(sl)){  
                 b=true;  
             }  
         }  
         return b;  
     }  
	public String[] getFields() {
		return fields;
	}
 
	/**
	 * 设置忽略的属性
	 * @param fields
	 */
	public void setFields(String[] fields) {
		this.fields = fields;
	}
 
	public boolean isIgnoreColl() {
		return ignoreColl;
	}
 
	/**
	 * 设置是否忽略集合类
	 * @param ignoreColl
	 */
	public void setIgnoreColl(boolean ignoreColl) {
		this.ignoreColl = ignoreColl;
	}
}


JsonConfig config = new JsonConfig();
config.setJsonPropertyFilter(new IgnoreFieldProcessorImpl(true)); // 忽略掉集合对象
 
People people= session.get(People.class, 20);
JSONObject fromObject = JSONObject.fromObject(person, config );
response.getWriter().print(fromObject.toString());

JsonConfig config = new JsonConfig();
config.setJsonPropertyFilter(new IgnoreFieldProcessorImpl(true, new String[]{"name"})); // 忽略掉name属性及集合对象
 
People people= session.get(People.class, 20);
JSONObject fromObject = JSONObject.fromObject(person, config );
response.getWriter().print(fromObject.toString());
分享到:
评论
1 楼 guimingyue 2011-01-03  
如果楼主Json-lib学的牛的话,希望楼主能写个通用的程序出来大家都用一下!俺用jsonlib的时候有个问题,希望楼主能看看http://guimingyue.iteye.com/admin/blogs/857850,谢谢........

相关推荐

    jsonlib需要jar包

    jsonlib需要jar包jsonlib需要jar包jsonlib需要jar包jsonlib需要jar包jsonlib需要jar包jsonlib需要jar包jsonlib需要jar包jsonlib需要jar包jsonlib需要jar包jsonlib需要jar包jsonlib需要jar包jsonlib需要jar包jsonlib...

    json lib最新源代码

    json lib最新源代码json lib最新源代码json lib最新源代码json lib最新源代码json lib最新源代码json lib最新源代码json lib最新源代码json lib最新源代码json lib最新源代码json lib最新源代码json lib最新源代码...

    jsonlib.rar

    jsonlib.rar jsonlib.rar jsonlib.rar jsonlib.rar jsonlib.rar jsonlib.rar

    jsonlib相关jar包

    jsonlib及其依赖jar包,它包括commons-beanutils.jar,commons-collections.jar,commons-lang.jar,commons-logging-1.2.jar, ezmorph-1.0.6.jar,json-lib-2.4-jdk15.jar,这些库可以满足转化Java对象到json的...

    json lib json lib

    开发 json 所依赖的 jar 开发 json 所依赖的 jar

    jsonlib包jsonlib包

    jsonlib包jsonlib包

    json-lib-2.4-jdk15.jar下载

    json-lib-2.4-jdk15.jar下载,json-lib是一款简单易用的Java JSON库。它可以将Java对象转换成JSON字符串,也可以将JSON字符串转换成Java对象。json-lib体积小、无依赖,性能表现也不错,适合在各种Java项目中使用。 ...

    json lib 2.4的jar包(含所有依赖包)

    完整json lib 2.4的jar包,包括: commons-beanutils-1.9.3.jar commons-collections-3.2.jar commons-lang-2.3.jar commons-logging-1.2.jar ezmorph-1.0.6.jar json-lib-2.4-jdk15.jar Java开发中对象转换...

    JSON Lib.rar

    JSON Lib.rar commons-beanutils-1.8.3.jar commons-collections-3.2.1.jar commons-lang-2.6.jar commons-logging-1.1.1.jar ezmorph-1.0.6.jar json-lib-2.4-jdk15.jar

    json lib

    json lib 2.2.1

    服务器端 json lib包

    服务器端 json lib包

    json lib jdk

    json lib jdk15。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

    springmvc_hibernate+json lib包

    springmvc_hibernate+json lib包

    编译好的json_lib.lib 包含64位,32位,头文件

    vs2017下编译好的json_lib.lib 包含64位,32位,头文件,请测可用

    JSON-lib包json-lib-0.8.jar和json-lib-0.9.jar包

    JSON-lib包json-lib-0.8.jar和json-lib-0.9.jar包

    json-lib-2.4

    java中json所需要得jar包,包含commons-beanutils-1.8.0、commons-collections-3.2.1、commons-lang-2.6、commons-logging-1.1.1、ezmorph-1.0.6、json-lib-2.4-jdk15、xom-1.2.6

    Gson和Jsonlib需要的jar包

    json解析工具,两个:分别是Gson和Jsonlib,用与对json解析

    json-lib.jar

    json一个jar 包 java 里面使用的一个JSON应用可以无线下载的别哈哈都不就卡的看吧据报道爱户外不都是 学技术点的那

    JSON-lib 2.2.2 完整包

    完整的JSON2.2.2包,包括依赖JAR,经过测试

Global site tag (gtag.js) - Google Analytics