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包如下: