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## 标题