JsonObject 处理日期
2015-07-17 16:32
435 查看
写这边文章的初衷就是遇到了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 ""; }
相关文章推荐
- JSONObject.fromObject方法出现处理日期属性异常
- 关于如何处理JSONObject.fromObject(Object obj)无法转换特殊日期(java.sql.Date,java.sql.Timestamp)格式的问题。
- JSONArray.fromObject()注入处理日期Date格式
- 关于如何处理JSONObject.fromObject(Object obj)无法转换特殊日期(java.sql.Date,java.sql.Timestamp)格式的问题。
- Extjs4---json处理日期的问题,JSONObject.toBean转换日期时显示当前日期
- Servlet,JDBC,JSONObject三者配和处理客户端请求并返回正确的json数据
- Jackson 高性能的JSON处理 ObjectMapper
- 接收处理JSON传过来的值,有日期和时间,如何把日期切掉?
- spring mvc前台传json值 后台接受处理成object
- springmvc 1.接受日期类型的参数 2.后台返回json串的格式处理(返回json串null值处理为"")
- java与json互相转换(解决日期问题),js显示json数据时出现日期类型显示[object,object]现象解决!
- java8 LocalDate 类型 json 解析 日期格式处理
- Newtonsoft.Json处理日期问题
- 关于JSONObject使用class not found的处理办法
- Newtonsoft.Json对object进行json转化(时间格式的处理)
- 用JSONObject解析和处理json数据
- Json解析异常处理方式(JSONException: Value of type java.lang.String cannot be converted to JSONObject)
- 处理json_encode()后数组为非标准数组(object)
- Newtonsoft.Json处理日期问题
- jQuery.each(object, [callback])方法,用于处理json数组