现在的位置: 首页 > 综合 > 正文

tree date转json解决方案

2017年11月20日 ⁄ 综合 ⁄ 共 2117字 ⁄ 字号 评论关闭

使用EXTJS的时候,在后台通常使用的是JSON传递数据,也就是使用到了json-lib包,但在使用中碰见了这么一个问题,就是结果json格式化的时间对象,是这样一个格式:

Java代码  收藏代码
  1. {"date":6,"day":4,"hours":16,"minutes":46,"month":4,"nanos":0,"seconds":35,"time":1273135595000,"timezoneOffset":-480,"year":110}  


而我们期望的格式如下:yyyy-MM-dd HH:mm:SS 

网上有几种办法,但是我觉得最好的还是使用JsonConfig这个来控制Date对象的格式, 

Java代码  收藏代码
  1. JsonConfig cfg = new JsonConfig();  
  2. cfg.registerJsonValueProcessor(java.util.Date.class,new DateJsonValueProcessor());  


转化的时候,带上cfg这个参数

Java代码  收藏代码
  1. JSONArray array = JSONArray.fromObject(list, cfg);  

这样就实现了控制时间格式的需求了。 
其中的DateJsonValueProcessor是我们自己创建的时间字段处理器,实现了JsonValueProcessor接口,代码如下: 

Java代码  收藏代码
  1. package com.scsk.common;  
  2.   
  3. import java.sql.Timestamp;  
  4. import java.text.DateFormat;  
  5. import java.text.SimpleDateFormat;  
  6. import java.util.Date;  
  7. import net.sf.json.JsonConfig;  
  8. import net.sf.json.processors.JsonValueProcessor;  
  9. public class DateJsonValueProcessor implements JsonValueProcessor {  
  10.     public static final String DEFAULT_DATE_PATTERN = "yyyy-MM-dd HH:mm:ss";   
  11.     private DateFormat dateFormat;   
  12.     public DateJsonValueProcessor() {   
  13.     this(DEFAULT_DATE_PATTERN);   
  14.     }   
  15.     public DateJsonValueProcessor(String datePattern) {   
  16.         try {  
  17.             dateFormat = new SimpleDateFormat(datePattern);  
  18.             } catch (Exception ex) {  
  19.                 dateFormat = new SimpleDateFormat(DEFAULT_DATE_PATTERN);  
  20.                 }  
  21.                 }  
  22.       
  23.     public Object processArrayValue(Object value, JsonConfig jsonConfig) {  
  24.         return process(value);  
  25.         }  
  26.       
  27.     public Object processObjectValue(String key, Object value,JsonConfig jsonConfig) {   
  28.             return process(value);  
  29.     }  
  30.       
  31.     private Object process(Object value) {  
  32.         if(value instanceof Timestamp)  
  33.             return dateFormat.format((Timestamp) value);  
  34.         else if(value instanceof Date)  
  35.             return dateFormat.format((Date) value);  
  36.         else if(value==null)  
  37.             return "";  
  38.         else  
  39.             return value.toString();  
  40.     }  
  41. }   


记得在Reader(JsonReader)中的时间字段把dateFormat制定哦,这里应该使用dateFormat: 'Y-m-d H:i:s' 
这样就可以在grid中显示时间了,当然根据这个原理, 你可以随意制定要格式化的时间格式!

抱歉!评论已关闭.