`
牧羊人
  • 浏览: 213568 次
  • 性别: 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,谢谢........

相关推荐

    json-lib 需要的所有jar包

    6. **过滤和转换**:可以使用`JSONObject.transform()`和`JSONArray.transform()`方法对JSON对象进行转换,例如,过滤或修改某些属性值。 7. **错误处理**:在进行JSON操作时,需要注意可能出现的异常,如`...

    json-lib 技术指南

    JSON-lib 提供了 `PropertyFilter` 接口,可以用来控制哪些 JavaBean 属性会被包含在 JSON 或 XML 中。这可以通过 `JsonConfig` 配置实现。另外,`JSONSerializer` 的 `prettyPrint()` 方法可以用于生成格式化的 ...

    使用json-lib将java对象转换成json字符串

    - 对于一个Java对象,例如一个User类的实例,首先需要确保该类的属性都有对应的getter和setter方法,这是json-lib能正确序列化和反序列化的前提。 - 转换时,可以先创建一个`JSONObject`,然后使用`JSONObject....

    改良版的json-lib2.4

    大家都知道jsonlib2.4之后有了属性过滤的功能,就是当把一个bean转成json的时候能指定哪些属性输出哪些不输出,不过代码很难看,如下 JsonConfig config = new JsonConfig(); config.setJsonPropertyFilter(new ...

    json lib net.sf.json使用的所有jar包

    3. **commons-beanutils-1.8.3.jar**:Apache Commons BeanUtils库简化了JavaBean对象的属性访问,它能帮助将JavaBean的属性值与JSON对象的键值对进行映射,从而实现JSON与Java对象的互换。 4. **commons-lang-2.1....

    Json-lib的六个jar包

    通过BeanUtils,Json-lib可以自动检测和序列化Java Bean的属性。 4. commons-collections-3.2.2.jar:这个库提供了集合操作的扩展,比如映射和过滤。在Json-lib中,它用于处理集合类型的对象,将其转换为JSON数组。...

    json_lib所需要的包

    3. `commons-beanutils-1.7.1-20061106.jar`: Apache Commons BeanUtils库简化了JavaBean对象的操作,能够方便地将JavaBean属性转换为JSON格式,或者将JSON数据填充到JavaBean中。 4. `ehcache-1.1.jar`: EhCache是...

    struts2 相关jar包 包含json-lib-2.1.jar+struts2-json-plugin-2.1.8.1.jar

    攻击者可能尝试通过构造恶意输入来操纵JSON响应,因此确保对用户输入进行适当验证和过滤至关重要。 6. **性能优化**: - 对于大型应用,可以通过调整Struts2配置,如减少不必要的拦截器,或者使用缓存机制来提高...

    json转换bean

    ### JSON与Java Bean之间的转换:理解JSON-lib的运用 在现代软件开发中,尤其是在Web服务和前后端分离架构中,JSON(JavaScript Object Notation)作为数据交换格式的重要性日益凸显。它简洁、轻量且易于人阅读,...

    net.sf.json.JSONObject需要引用几个JAR包

    2. **commons-collections.jar**:Apache Commons Collections库提供了大量对集合操作的工具类和算法,如转换、查找、过滤等,`json-lib`在处理JSON对象时可能需要用到。 3. **commons-lang-2.4.jar**:Apache ...

    commons系列 ezmorph-1.0.4 filterbuilder json-lib-2.4-jdk15 htmlparser

    标题中的"commons系列 ezmorph-1.0.4 filterbuilder json-lib-2.4-jdk15 htmlparser"提到了几个关键的Java库,它们在IT领域中扮演着重要角色,尤其在服务器端开发中。让我们逐一深入探讨这些库的功能和应用场景。 1...

    List对象转JSON对象jar包

    在JSON转换过程中,它可能用于辅助数据结构的处理,比如遍历、过滤或者转换List。 4. **commons-lang-2.6.jar**:Apache Commons Lang是一个包含大量实用工具方法的Java类库,用于补充Java的标准库。在List到JSON的...

    java解析JSON所需的全部jar包

    在处理JSON时,可能需要使用到它的功能,如列表和映射的遍历、查找、过滤等。 3. **commons-lang-2.3.jar**:这是Apache Commons Lang库的一个版本,它包含了一些有用的Java语言实用工具,如字符串处理、日期时间...

    java与json之间的互操作[参照].pdf

    另外,通过设置`JsonConfig`对象,可以指定属性过滤器`PropertyFilter`,从而决定哪些属性应该被包含在JSON中。 7. **测试**:编写测试类,如`JsonlibTest`,使用JUnit进行单元测试,验证Java对象与JSON之间的转换...

    Extjs Tree + JSON + Struts2 例子

    这些文件包括:commons-beanutils、commons-collections、commons-digester、commons-lang、commons-logging、dom4j、ezmorph、freemarker、javassist、json-lib、log4j、ognl、struts2-core、xml-apis 和 xwork。...

    json所需所有架包

    - **用途**:json-lib 是一个用于处理JSON数据的Java库,它提供了将Java对象序列化为JSON字符串以及反序列化JSON字符串为Java对象的功能。这对于在Web应用中与服务器进行数据交互非常有用。 - **特点**: - 支持...

    java与json之间的互操作

    可以通过`JsonConfig`类配置转换规则,例如定义自定义的`JsonValueProcessor`来处理特定类型的字段,或者使用`PropertyFilter`来过滤JSON序列化过程中不想包含的属性。 在实际应用中,除了JSON-lib之外,还有其他的...

    java > JSON 使用

    2. `commons-beanutils.jar`则是Apache Commons BeanUtils库,它简化了Java Bean的操作,可以方便地将Bean属性转化为JSON对象。 3. `commons-collections-3.0.jar`包含了Apache Commons Collections库,提供了丰富的...

    json需要的jar包

    在处理JSON时,我们可能需要对数据进行操作,如过滤、排序或转换,Commons Collections提供了这些功能,使得处理复杂的数据结构变得更加简单。 json-lib是一个针对多种Java平台的JSON库,它提供了一种将Java对象...

    Java jar JSON依赖包

    在处理JSON时,这个库可以用来方便地读取和设置Java Bean的属性,这对于将Java对象映射到JSON或者从JSON恢复Java对象非常有用。 4. **commons-lang.jar**:Apache Commons Lang是Apache Commons项目的一部分,提供...

Global site tag (gtag.js) - Google Analytics