1.JSON日期格式转换
默认JSON对DATE类型会转换成一个多属性对象, 而不是单独的一个字符串, 在某些应用处理上不是很方便, 可以利用JsonValueProcessor来实现日期的转换.
默认格式:
"createDate":{"nanos":0
,"time":1371721834000
,"minutes":50
,"seconds":34
,"hours":17
,"month":5
,"year":113
,"timezoneOffset":-480,"day":4
,"date":20
},
转换后格式:
"createDate":"2013-06-20 17:50:34"
方法:
1.增加一个DateJsonValueProcessor类,如下:
importjava.text.SimpleDateFormat;importjava.util.Date;importnet.sf.json.JsonConfig;importnet.sf.json.processors.JsonValueProcessor;/*** JSON日期格式转换
**/
public class DateJsonValueProcessor implementsJsonValueProcessor
{private String format = "yyyy-MM-dd HH:mm:ss";publicDateJsonValueProcessor()
{
}publicDateJsonValueProcessor(String format)
{this.format =format;
}publicObject processArrayValue(Object value, JsonConfig jsonConfig)
{
String[] obj={};if (value instanceofDate[])
{
SimpleDateFormat sf= newSimpleDateFormat(format);
Date[] dates=(Date[]) value;
obj= newString[dates.length];for (int i = 0; i < dates.length; i++)
{
obj[i]=sf.format(dates[i]);
}
}returnobj;
}publicObject processObjectValue(String key, Object value, JsonConfig jsonConfig)
{if (value instanceofDate)
{
String str= newSimpleDateFormat(format).format((Date) value);returnstr;
}returnvalue;
}publicString getFormat()
{returnformat;
}public voidsetFormat(String format)
{this.format =format;
}
}
转换调用代码:
JsonConfig jsonConfig = newJsonConfig();
jsonConfig.registerJsonValueProcessor(java.util.Date.class, newDateJsonValueProcessor());
JSONObject jsonObj=JSONObject.fromObject(bean, jsonConfig);return jsonObj.toString();
其中 bean 指的是你需要转为json的java对象。
需要注意的是 代码中的 java.util.Date.class 要与对象中日期字段的类型一致,比如对象中的字段为 private Timestamp openAccountDate; 那么代码中 java.util.Date.class 应该改为 java.sql.Timestamp.class