JSONArray.fromObject()注入处理日期Date格式

package jsonDateProcess;
import java.sql.Date;
import java.text.SimpleDateFormat;
import java.util.Locale;
import net.sf.json.JsonConfig;
import net.sf.json.processors.JsonValueProcessor;
/**
 * 
 * @description: 用于JSONArray.fromObject()的注入处理日期Date类 (1)对于以Date时间属性为null值时,
 *               ,则返回空字符串,因为其转换过程中会出现问题,虽然没有发生异常,但是Ajax请求会报404 Not Found的错误
 *               (2)转换日期的格式
 * @fileName:JsonDateValueProcessor.java
 * @createTime:2015年12月8日 上午11:33:39
 * @author:liwenjian
 * @version 1.0.0
 * 
 */
public class JsonDateValueProcessor implements JsonValueProcessor {
    @Override
    public Object processArrayValue(Object obj, JsonConfig jsonconfig) {
        return process(obj);
    }
    @Override
    public Object processObjectValue(String s, Object obj, JsonConfig jsonconfig) {
        return process(obj);
    }
    private Object process(Object obj) {
        if (obj == null) {// 如果时间为null,则返回空字串
            return "";
        }
        if (obj instanceof Date) {
            obj = new java.util.Date(((Date) obj).getTime());
        }
        if (obj instanceof java.util.Date) {
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd",
                    Locale.CHINA);// 格式化时间为yyyy-MM-dd类型
            return sdf.format(obj);
        } else {
            return new Object();
        }
    }
}
package jsonDateProcess;
import java.util.Date;
/**
 * 
 * @description:   用户表
 * @fileName:User.java 
 * @createTime:2015年12月8日 下午2:55:46  
 * @author:liwenjian  
 * @version 1.0.0  
 *
 */
public class User {
    private String name;
    private Date createDate;
    private Date updateDate;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Date getCreateDate() {
        return createDate;
    }
    public void setCreateDate(Date createDate) {
        this.createDate = createDate;
    }
    public Date getUpdateDate() {
        return updateDate;
    }
    public void setUpdateDate(Date updateDate) {
        this.updateDate = updateDate;
    }
}
package jsonDateProcess;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import net.sf.json.JSONArray;
import net.sf.json.JsonConfig;
/**
 * 
 * @description: 测试类
 * @fileName:JsonDateFormat.java
 * @createTime:2015年12月8日 下午3:03:00
 * @author:liwenjian
 * @version 1.0.0
 * 
 */
public class JsonDateFormat {
    public static void main(String[] args) {
        List<User> list = new ArrayList<User>();
        User user = new User();
        user.setName("张三");
        user.setCreateDate(new Date());
        user.setUpdateDate(new Date());
        list.add(user);
        user = new User();
        user.setName("李四");
        user.setCreateDate(new Date());
        user.setUpdateDate(null);
        list.add(user);
        JsonConfig jsonConfig = new JsonConfig();
        jsonConfig.registerJsonValueProcessor(Date.class,
                new JsonDateValueProcessor());// 注入处理Date类
        JSONArray jsonArray = JSONArray.fromObject(list, jsonConfig);
        System.out.println(jsonArray.toString());
    }
}
输出结果:[{"createDate":"2015-12-08","name":"张三","updateDate":"2015-12-08"},{"createDate":"2015-12-08","name":"李四","updateDate":""}]

涉及到的jar包如下:

posted @ 2015-12-29 21:20  Vincent-Li  阅读(2418)  评论(0编辑  收藏  举报