JAVA对象转换为JSON及日期格式转换处理
默认JSON对DATE类型会转换成一个多属性对象, 而不是单独的一个字符串, 在某些应用处理上不是很方便, 可以利用JsonValueProcessor来实现日期的转换.
方法:
1.增加一个DateJsonValueProcessor类,如下:
import java.text.SimpleDateFormat;
import java.util.Date;
import net.sf.json.JsonConfig;
import net.sf.json.processors.JsonValueProcessor;
/**
- JSON日期格式转换
*/
public class DateJsonValueProcessor implements JsonValueProcessor{
//注意日期格式要求
private String format = “yyyy-MM-dd”;
public DateJsonValueProcessor(){
}
public DateJsonValueProcessor(String format){
this.format = format;
}
@Override
public Object processArrayValue(Object value, JsonConfig jsonConfig){
String[] obj = {};
if (value instanceof Date[]){
SimpleDateFormat sf = new SimpleDateFormat(format);
Date[] dates = (Date[]) value;
obj = new String[dates.length];
for (int i = 0; i < dates.length; i++){
obj[i] = sf.format(dates[i]);
}
}
return obj;
}
@Override
public Object processObjectValue(String key, Object value, JsonConfig jsonConfig){
if (value instanceof Date){
String str = new SimpleDateFormat(format).format((Date) value);
return str;
}
return value;
}
public String getFormat(){
return format;
}
public void setFormat(String format){
this.format = format;
}
}
转换调用代码:
JsonConfig jsonConfig = new JsonConfig();
jsonConfig.registerJsonValueProcessor(java.util.Date.class, new DateJsonValueProcessor());
JSONArray jsonArray=JSONArray.fromObject(bean, jsonConfig);
其中 bean 指的是你需要转为json的java对象。
需要注意的是:代码中的 java.util.Date.class 要与对象中日期字段的类型一致,比如对象中的字段为 private Time openAccountDate; 那么代码中 java.util.Date.class 应该改为 java.sql.Timestamp.class## 标题