最近在使用EXT开发系统。在和数据库交互时用JSON。但是在读取日期字字段时总是无法正常的显示日期。把JSON转化成字符串后打印的结果如下:{"date":3,"day":4,"hours":6,"minutes":46,"month":4,"nanos":0,"seconds":25,"time":1235595000,"timezoneOffset":-480,"year":110} 。但是在EXT中要显示日期必须是“YYYY-MM-DD”格式。
上网查找后发现有个Json-lib的JAR包。首先创建一个工具类JsonUtil,代码如下:
public class JsonUtil {
public static JsonConfig configJson(){
JsonConfig jcf = new JsonConfig();
jcf.registerJsonValueProcessor(Date.class, new JsonDateValueProcessor());
return jcf;
}
}。接着创建一个如期转化类JsonValueProcessorImpl,代码如下:
public class JsonValueProcessorImpl implements JsonValueProcessor{ /**
* 默认的格式
*/
private String format = "yyyy-MM-dd HH:mm:ss"; public JsonValueProcessorImpl() {
}; public JsonValueProcessorImpl(String format) {
this.format = format;
} /**
* 格式化数组
*/
public Object processArrayValue(Object value, JsonConfig jsonConfig) {
String[] obj = {};
if (value instanceof java.util.Date[]) {
SimpleDateFormat sf = new SimpleDateFormat(format);
java.util.Date[] dates = (java.util.Date[]) value;
obj = new String[dates.length];
for (int i = 0; i < dates.length; i++) {
obj[i] = sf.format(dates[i]);
}
}
if (value instanceof Timestamp[]) {
SimpleDateFormat sf = new SimpleDateFormat(format);
Timestamp[] dates = (Timestamp[]) value;
obj = new String[dates.length];
for (int i = 0; i < dates.length; i++) {
obj[i] = sf.format(dates[i]);
}
}
if (value instanceof java.sql.Date[]) {
SimpleDateFormat sf = new SimpleDateFormat(format);
java.sql.Date[] dates = (java.sql.Date[]) value;
obj = new String[dates.length];
for (int i = 0; i < dates.length; i++) {
obj[i] = sf.format(dates[i]);
}
}
return obj;
} /**
* 格式化单一对象
*/
public Object processObjectValue(String key, Object value,
JsonConfig jsonConfig) {
if(Utils.isEmpty(value))
return "";
if (value instanceof Timestamp) {
String str = new SimpleDateFormat(format).format((Timestamp) value);
return str;
} else if (value instanceof java.util.Date) {
String str = new SimpleDateFormat(format).format((java.util.Date) value);
return str;
} else if (value instanceof java.sql.Date) {
String str = new SimpleDateFormat(format).format((java.sql.Date) value);
return str;
}
return value.toString();
} public String getFormat() {
return format;
} public void setFormat(String format) {
this.format = format;
}}下面的代码是使用上面两个类的代码
List list=iapu.getWorkscope(workscopeId);
JSONArray All_JSONArray=new JSONArray();
Map temp = (Map)list.get(0);
JsonConfig cfg = new JsonConfig();
cfg.registerJsonValueProcessor(java.sql.Timestamp.class, new JsonValueProcessorImpl("yyyy-mm-dd"));
cfg.registerJsonValueProcessor(java.util.Date.class, new JsonValueProcessorImpl("yyyy-mm-dd"));
cfg.registerJsonValueProcessor(java.sql.Date.class, new JsonValueProcessorImpl("yyyy-mm-dd"));
All_JSONArray.add(JSONObject.fromObject(temp, cfg));
Map rt_map=new HashMap();
rt_map.put("rows", All_JSONArray);
JSONObject json = JSONObject.fromObject(rt_map);最后可以正常的显示日期格式tbw。
上网查找后发现有个Json-lib的JAR包。首先创建一个工具类JsonUtil,代码如下:
public class JsonUtil {
public static JsonConfig configJson(){
JsonConfig jcf = new JsonConfig();
jcf.registerJsonValueProcessor(Date.class, new JsonDateValueProcessor());
return jcf;
}
}。接着创建一个如期转化类JsonValueProcessorImpl,代码如下:
public class JsonValueProcessorImpl implements JsonValueProcessor{ /**
* 默认的格式
*/
private String format = "yyyy-MM-dd HH:mm:ss"; public JsonValueProcessorImpl() {
}; public JsonValueProcessorImpl(String format) {
this.format = format;
} /**
* 格式化数组
*/
public Object processArrayValue(Object value, JsonConfig jsonConfig) {
String[] obj = {};
if (value instanceof java.util.Date[]) {
SimpleDateFormat sf = new SimpleDateFormat(format);
java.util.Date[] dates = (java.util.Date[]) value;
obj = new String[dates.length];
for (int i = 0; i < dates.length; i++) {
obj[i] = sf.format(dates[i]);
}
}
if (value instanceof Timestamp[]) {
SimpleDateFormat sf = new SimpleDateFormat(format);
Timestamp[] dates = (Timestamp[]) value;
obj = new String[dates.length];
for (int i = 0; i < dates.length; i++) {
obj[i] = sf.format(dates[i]);
}
}
if (value instanceof java.sql.Date[]) {
SimpleDateFormat sf = new SimpleDateFormat(format);
java.sql.Date[] dates = (java.sql.Date[]) value;
obj = new String[dates.length];
for (int i = 0; i < dates.length; i++) {
obj[i] = sf.format(dates[i]);
}
}
return obj;
} /**
* 格式化单一对象
*/
public Object processObjectValue(String key, Object value,
JsonConfig jsonConfig) {
if(Utils.isEmpty(value))
return "";
if (value instanceof Timestamp) {
String str = new SimpleDateFormat(format).format((Timestamp) value);
return str;
} else if (value instanceof java.util.Date) {
String str = new SimpleDateFormat(format).format((java.util.Date) value);
return str;
} else if (value instanceof java.sql.Date) {
String str = new SimpleDateFormat(format).format((java.sql.Date) value);
return str;
}
return value.toString();
} public String getFormat() {
return format;
} public void setFormat(String format) {
this.format = format;
}}下面的代码是使用上面两个类的代码
List list=iapu.getWorkscope(workscopeId);
JSONArray All_JSONArray=new JSONArray();
Map temp = (Map)list.get(0);
JsonConfig cfg = new JsonConfig();
cfg.registerJsonValueProcessor(java.sql.Timestamp.class, new JsonValueProcessorImpl("yyyy-mm-dd"));
cfg.registerJsonValueProcessor(java.util.Date.class, new JsonValueProcessorImpl("yyyy-mm-dd"));
cfg.registerJsonValueProcessor(java.sql.Date.class, new JsonValueProcessorImpl("yyyy-mm-dd"));
All_JSONArray.add(JSONObject.fromObject(temp, cfg));
Map rt_map=new HashMap();
rt_map.put("rows", All_JSONArray);
JSONObject json = JSONObject.fromObject(rt_map);最后可以正常的显示日期格式tbw。
解决方案 »
- JAVA实现背包问题
- jfilechooser中怎么既可以选择文件又可以选择文件夹
- 帮我看看,有点疑问
- HibernateException: Hibernate Dialect must be explicitly set
- Hibernate HQL怎样查询无主键表?
- getCurrentSession()的问题
- resin+spring中配置JNDI的问题
- ask a qustion!!!!有分
- 各位好心的,会有好报的!jspsmartupload的问题
- 请问在weblogic6.1下配置struts和在tomcat下配置struts有什么不同吗??有什么特殊的配置需要吗??
- java自动画线段,关于sleep
- jsp页面有一个按钮,点击保存整个页面为图片
function rendererDate(value) {
var dateValue = new Date(value.time);
return dateValue.format('Y-m-d H:i:s');
}