博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

json Date类型数据处理

Posted on 2018-01-11 13:52  叶叶叶帆帆  阅读(489)  评论(0)    收藏  举报

我们经常使用 JSONArray array=JSONArray.fromObject() 将对象集合  List  转换成jsp所需的   JSONArray   形式

但是当处理到的  List  中包含  Date  类型的数据时,会出现错误。

此时,我们应该怎么解决这个问题。

JSON-lib is a java library for transforming beans, maps, collections, java arrays and XML to JSON and back again to beans and DynaBeans.

某些时候,我们需要对对象转为字符串的过程加以控制,最常见需求如数值格式化和日期格式化。

JSON lib提供了JsonConfig对象,该对象能够深刻影响Java对象转成json字符串的行为。

我们要控制JSON序列化过程中的Date对象的格式化,以及数值的格式化,JsonValueProcessor是最好的选择。

首先,我们应定义一个日期处理类:

import java.text.SimpleDateFormat;

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

/**
* json-lib 日期处理类
* @author Administrator
*
*/
public class DateJsonValueProcessor implements JsonValueProcessor{

private String format;

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

public Object processArrayValue(Object value, JsonConfig jsonConfig) {
// TODO Auto-generated method stub
return null;
}

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

return value.toString();
}

}

然后在Controller中重新注册json配置对象:

JsonConfig jsonConfig=new JsonConfig();
jsonConfig.registerJsonValueProcessor(java.util.Date.class, new DateJsonValueProcessor("yyyy-MM-dd HH-mm"));

最后在使用JSONArray的时候使用重载函数:

JSONArray array=JSONArray.fromObject(List,jsonConfig);

JSONObject jsonObjecg=JSONObject.from(Object,jsonConfig);    注意在转换的时候就要使用jsonConfig

这就是json处理date类型数据的一个解决方法