`
ErHuo
  • 浏览: 21538 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

net.sf.json.JsonConfig整合net.sf.json.util.PropertyFilter

阅读更多
import java.lang.reflect.Field;
import java.text.SimpleDateFormat;
import java.util.Collection;
import java.util.Date;
import java.util.Locale;
import java.util.Set;

import net.sf.json.JSONObject;
import net.sf.json.JsonConfig;
import net.sf.json.processors.JsonValueProcessor;
import net.sf.json.util.PropertyFilter;


public class Test implements PropertyFilter,JsonValueProcessor{
	private String format ="yyyy-MM-dd HH:mm:ss";  
	/**
     * 忽略的属性名称
     */
    private String[] fields;
    /**
     * 是否忽略集合
     */
    private boolean ignoreColl = false;
    
	public String[] getFields() {
		return fields;
	}

	public void setFields(String[] fields) {
		this.fields = fields;
	}

	public boolean isIgnoreColl() {
		return ignoreColl;
	}

	public void setIgnoreColl(boolean ignoreColl) {
		this.ignoreColl = ignoreColl;
	}
	

	public Test() {
		super();
	}

	

	public Test(String format, String[] fields, boolean ignoreColl) {
		super();
		this.format = format;
		this.fields = fields;
		this.ignoreColl = ignoreColl;
	}

	@Override
	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) {
                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;  
     }  
     
     
     
     @Override  
     public Object processArrayValue(Object paramObject,  
             JsonConfig paramJsonConfig) {  
         return process(paramObject);  
     }  
   
     @Override  
     public Object processObjectValue(String paramString, Object paramObject,  
             JsonConfig paramJsonConfig) {  
         return process(paramObject);  
     }  
       
       
     private Object process(Object value){  
         if(value instanceof Date){    
             SimpleDateFormat sdf = new SimpleDateFormat(format,Locale.CHINA);    
             return sdf.format(value);  
         }    
         return value == null ? "" : value.toString();    
     }  
     
     
     public static void main(String[] args) {
    	 JsonConfig config = new JsonConfig();
    	 //设置集合不转换  ----  name过滤不转换
    	 config.setJsonPropertyFilter(new Test("yyyy-MM-dd",new String[]{"name"}, true));
    	 //设置时间转换
    	 config.registerJsonValueProcessor(Date.class,new Test());
    	 Demo demo = new Demo("1", "name", "age", "test", null);
    	 
    	 
    	 
    	 JSONObject object = JSONObject.fromObject(demo, config);
    	 
    	 
    	 System.out.println(object);
	}

}

分享到:
评论

相关推荐

    JSON net.sf.json jar包

    在你的压缩包`NetSfJsonjar_jb51`中,包含了`net.sf.json`库的相关JAR文件,这些文件是运行依赖于`net.sf.json`的Java项目所必需的。当你在项目中引入这个JAR包,就可以直接调用其提供的类和方法来处理JSON数据。...

    net.sf.json依赖包

    `net.sf.json` 是一个广泛使用的开源JSON库,主要用于Java应用程序中处理JSON(JavaScript Object Notation)数据。JSON是一种轻量级的数据交换格式,它使得人和机器都能容易地读写数据,通常用于Web服务和客户端...

    Could not initialize class net.sf.jasperreports.engine.util.JRStyledTextParser

    标题 "Could not initialize class net.sf.jasperreports.engine.util.JRStyledTextParser" 提示了一个Java运行时错误,这通常意味着在尝试加载或初始化`JRStyledTextParser`类时遇到了问题。`JRStyledTextParser`是...

    net.sf.json

    - 转换策略:`net.sf.json.util.JSONConfig`允许你配置转换规则,比如日期格式、循环引用的处理等。 总的来说,`net.sf.json`库是Java开发中处理JSON的强大工具,它简化了JSON数据在Java对象间的转换,同时也提供了...

    Java中使用Json的net.sf.json包

    除了这两个基本类,net.sf.json还提供了一些辅助类和方法,如JSONFunction、JSONML、JSONConfig等,用于处理更复杂的JSON场景: - **JSONFunction**:表示一个JSON格式的函数,常用于与JavaScript交互。 - **JSONML...

    JSONObject(net.sf.json)jar包和依赖包

    通过JSONObject json = ... 进入此方法后会继续调用fromObject(Object, JsonConfig)的重载方法,在此重载方法中会通过instanceOf判断待转换的Object对象是否是枚举、注解等类型,这些特殊类型会有特别的判断方法。

    net.sf.json.2.4.api.7z

    《深入理解net.sf.json库:API详解与应用实践》 在Java开发中,处理JSON数据是一项常见的任务。net.sf.json库作为一个轻量级的JSON处理工具,为开发者提供了丰富的API,使得JSON对象与Java对象之间的转换变得简单易...

    java.util.Date到Json日期

    jsonConfig.registerJsonValueProcessor(java.util.Date.class, new DateJsonValueProcessor("yyyy-MM-dd HH:mm:ss")); ``` 这里,我们创建了一个`DateJsonValueProcessor`实例,并指定了输出日期的格式。这个...

    ezmorph-1.0.6.jar

    缺少这个包可能导致Could not initialize class net.sf.json.JsonConfig 使用json时候将会用到的一个jar包,发现这个包在网上提供的比较少.缺少这个包可能导致Could not initialize class net.sf.json.JsonConfig ...

    Java解析Json所含的包

    5. `net.sf.json.util.JSONConfig`:这个类允许你配置JSON的序列化和反序列化行为,比如是否忽略空值,如何处理日期等。 6. `net.sf.json.xml.XMLSerializer`:如果你需要在JSON和XML之间进行转换,这个类可以派上...

    json-lib-2.4-jdk15.jar

    1. **JSON对象和数组的创建**:json-lib提供了`net.sf.json.JSONObject`和`net.sf.json.JSONArray`类,可以方便地创建和操作JSON对象和数组。 2. **Java对象到JSON的转换**:json-lib支持将Java对象如HashMap、...

    jsonlib需要jar包

    import net.sf.json.util.JSONConfig; // 创建一个Java对象 Map, Object> myObject = new HashMap(); myObject.put("key1", "value1"); myObject.put("key2", "value2"); // 配置JSON转换 JSONConfig jsonConfig =...

    json-lib-2.1 2.2 2.3 2.4-jdk15

    JSONArray.fromObject(map)报错:Could not initialize class net.sf.json.JsonConfig。ireport 需要高于2.1版本的包。于是就找了这些包。最后2.2.2适合

    Java操作json的通用类

    import net.sf.json.JsonConfig; import net.sf.json.util.CycleDetectionStrategy; ``` 这里值得注意的是,`net.sf.json.*`是Apache Commons JSON库的一部分,该库提供了一组用于处理JSON数据的工具方法和类。 ##...

    json-lib依赖包

    使用`json-lib`时,你可以创建一个`JsonConfig`对象来自定义序列化和反序列化的配置,然后使用`net.sf.json.JSONObject`或`net.sf.json.JSONArray`类来处理JSON数据。例如,将Java对象转换为JSON字符串: ```java ...

    两种常用json处理jar包

    为了处理JSON数据,Java社区提供了多种库,其中两个常用的库是net.sf.json和org.json。这两个库分别由不同的开发者维护,它们提供了不同的API和功能,以满足不同开发需求。 首先,我们来看`net.sf.json`,这是一个...

    java jsonto对象互转

    import net.sf.json.util.CycleDetectionStrategy; import net.sf.json.util.JSONUtils; public class TestJsonServlet { /** * 从一个JSON 对象字符格式中得到一个java对象 * * @param jsonString * @param ...

    json转对象数组与对象数组转json --Java

    import net.sf.json.util.JSONSerializer; // 假设PropertyT是我们定义的一个Java类 public class PropertyT { private String MName; private String MValue; // Getter and Setter methods public String ...

    java解析json

    import net.sf.json.JsonConfig; import net.sf.json.util.JSONUtils; public class Jsontest { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub ...

    json-lib.rar

    import net.sf.json.JSONConfig; import net.sf.json.xml.XMLConfigBuilder; import net.sf.json.xml.XMLSerializer; String xmlString = "<person><name>张三</name><age>30</age></person>"; XMLConfigBuilder ...

Global site tag (gtag.js) - Google Analytics