json Date类型数据处理

我们经常使用 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类型数据的一个解决方法

你可能感兴趣的:(ajx&json)