对象转JSONArray,JSONObject[包括对象中日期格式化,属性过滤]

创建时间转换器

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;

import net.sf.json.JsonConfig;
import net.sf.json.processors.JsonValueProcessor;


public class JsonDateValueProcessor  implements JsonValueProcessor {
	private String format ="yyyy-MM-dd hh:mm:ss";
	
	public JsonDateValueProcessor() {
		super();
	}
	
	public JsonDateValueProcessor(String format) {
		super();
		this.format = format;
	}

	public Object processArrayValue(Object paramObject,
			JsonConfig paramJsonConfig) {
		return process(paramObject);
	}

	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();  
    }


}


创建对象属性过滤器,并能对对象中date格式字段进行字符串格式转换


import java.lang.reflect.Field;
import java.util.Date;

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import net.sf.json.JsonConfig;
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;
  
    /**
     * 空参构造方法<br/>
     * 默认不忽略集合
     */
    public IgnoreFieldProcessorImpl() {
        // empty
    }
  
    /**
     * 构造方法
     * @param fields 保留属性名称数组
     */
    public IgnoreFieldProcessorImpl(String[] fields) {
        this.fields = fields; 
    }
  
    /**
     * 构造方法
     * @param fields    保留属性名称数组
     */
    public IgnoreFieldProcessorImpl(boolean ignoreColl, String[] fields) {
        this.fields = fields;
    }
  
    public boolean apply(Object source, String name, Object value) {
        Field declaredField = null;
        
        // 保留设定的属性
        if(fields != null && fields.length > 0) {
            if(juge(fields,name)) {  
            	 return false;  
            } else {  
            	return true; 
               
            } 
        }
          
        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;  
     }  
     
     /**
      * 获取保留的属性
      * @param fields
      */
    public String[] getFields() {
        return fields;
    }
  
    /**
     * 设置保留的属性
     * @param fields
     */
    public void setFields(String[] fields) {
        this.fields = fields;
    }
    
    /**
     * 保留字段转换json 对象
     * @param configs 保留字段名称
     * @param entity 需要转换实体
     * @return
     */
    public static JSONObject JsonConfig(String[] configs,Object entity){
        JsonConfig config = new JsonConfig();
        config.setJsonPropertyFilter(new IgnoreFieldProcessorImpl(true, configs)); // 保留的属性<span style="font-family: Arial, Helvetica, sans-serif;">configs</span>
        config.registerJsonValueProcessor(Date.class, new JsonDateValueProcessor()); // 将对象中的日期进行格式化
        JSONObject fromObject = JSONObject.fromObject(entity, config );
        return fromObject;
 
    }
    
    
    /**
     * 保留字段转换json 数组
     * @param configs 保留字段名称
     * @param entity 需要转换实体
     * @return
     */
    public static JSONArray ArrayJsonConfig(String[] configs,Object entity){
        JsonConfig config = new JsonConfig();
        config.setJsonPropertyFilter(new IgnoreFieldProcessorImpl(true, configs)); //<span style="font-family: Arial, Helvetica, sans-serif;">保留的属性</span><span style="font-family: Arial, Helvetica, sans-serif;">configs</span>
        config.registerJsonValueProcessor(Date.class, new JsonDateValueProcessor());
        JSONArray fromObject = JSONArray.fromObject(entity, config );
        return fromObject;
    }
    
}

调用方法,

例:将exam对象转换成JSONObject并只保留需要的字段

JSONObject ex = IgnoreFieldProcessorImpl.JsonConfig(new String[]{"id","examName","examDate"}, exam);


例:将list<Course>对象转换成JSONArray并只保留Course中需要保留的字段

JSONArray listj=IgnoreFieldProcessorImpl.ArrayJsonConfig(new String[]{"id","courseName","examDate","remark"}, list);
				



评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值