JsonObject 处理日期

    写这边文章的初衷就是遇到了json在转换日期格式出现了异常 net.sf.json.JSONException: java.lang.reflect.InvocationTargetException  原因是当你用Map接收数据库返回了java.sql.Date 日期的数据进行json转换出的问题话不多说  直接上代码

    经过测试,以下json对日期的格式化转换支持java.util.Date,java.sql.Date 或者时间戳 等等日期格式
    转化方法

/**
  * toString的另一种写法
  * 通过传入参数日期的类类型
  * @parm Class<?> c 日期的类类型 如java.util.Date.class
  * @parm String format 日期格式化设置 如 "yyyy-mm-dd"
  * @return String
  */
 public String getString(Class<?> c,String format){
  //如果传入的类类型不是日期的类类型 就给默认的类型
  if(!"Date".equals(c.getSimpleName())){
   c = java.util.Date.class;
  }
  if(null == c || "".equals(c)&& !"Timestamp".equals(c.getSimpleName())){
   c = java.util.Date.class;
  }
  //创建一个格式化日期json对象
  JsonConfig entryConfig = new JsonConfig();
  // 将java.util.Date()的日期格式转换并且设置转换的格式(实体对象)
  if(null == format || "".equals(format)){
   format = "yyyy-MM-dd";
  }
  entryConfig.registerJsonValueProcessor(c,
    new JsonDateValueProcessor(format));
  JSONObject jsonObject = new JSONObject();
  if(null == rows || "".equals(rows)){
   jsonObject.put("rows", "");
  }else{
   //如果是集合则用jsonarry转换
   if(rows instanceof java.util.List)
    jsonObject.put("rows", JSONArray.fromObject(rows,entryConfig));
   else
    jsonObject.put("rows", JSONObject.fromObject(rows,entryConfig));
  }
  jsonObject.put("total", total);
  jsonObject.put("statusCode", statusCode);
  jsonObject.put("message", message);
  return jsonObject.toString();
 }

   格式化类

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

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

public class JsonDateValueProcessor implements JsonValueProcessor {
	// 定义转换日期类型的输出格式
	private String format = "yyyy-MM-dd";

	public JsonDateValueProcessor() {

	}

	public JsonDateValueProcessor(String format) {
         this.format = format;
	}

	@Override
	public Object processArrayValue(Object arg0, JsonConfig arg1) {
		return process(arg0);
	}

	private Object process(Object arg0) {
		SimpleDateFormat sdf = new SimpleDateFormat(format);
		return sdf.format(arg0);
	}

	@Override
	public Object processObjectValue(String key, Object value,
			JsonConfig jsonConfig) {
		if (value instanceof java.util.Date) {
			String str = new SimpleDateFormat(format).format((Date) value);
			return str;
		}
		if (null != value) {
			return value.toString();
		}
		return "";
	}

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值