1. 程式人生 > >JAVA物件轉換為JSON及日期格式轉換處理

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